Posez votre question Signaler

Effacer une partie d'une cellule Excel

Quentin - Dernière réponse le 12 janv. 2010 à 15:03
Bonjour, je suis novice en VBA et j'aimerais réaliser un code qui permetterai d'éffacer une partie d'une cellule excel.
Je m'explique: dans une cellule excel arrive un signal variable de la forme suivante: 1328;2547;127;22328;9837; et ainsi de suite (les nombres entre les ";" varient eux aussi)
- j'aimerais réaliser un code gérer par un bouton pour éffacer la dernière donnée entrante du signal
(ici: 9837;)
- j'aimerais réaliser un code gérer par un bouton pour éffacer les trois premières données
(ici: 1328;2547;127;)
J'ai naturellement pensé à la fonction Clear sur la cellule, mais c'est ici que je manque d'idées et surtout de compétences. J'aimerais me servir des ";" pour dire à quel endroit éffacer comme les nombres varient.
J'ai conscience que ce que je demande est un peu tordu par les cheveux ! Mais ça m'aiderais beaucoup pour mon stage !
Merci d'avance
Lire la suite 
Réponse
+0
moins plus
Bonjour,
c'est possible avec par exemple les fonction InStr et InStrRev. Tu cherches les points-virgules puis tu utilises les fonctions Right et Left.
Je peux t'écrire le code mais j'ai besoin d'infos :
- Dans quelle cellule est ta chaîne de valeurs
- Est-ce que ta chaîne se termine toujours par un point-virgule
- Dans quelle cellule veux-tu écrire le résultat

Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,


voici le code qui devrait t'aider.
Copie le dans un module vba et lie la macro à un bouton.
La macro telle qu'elle prend la valeur de la cellule située en B1 (cells(1,2)) à adapter en fonction de tes besoins.

Sub macro()
Dim valeur, longueur, nbre As Variant
valeur = Cells(1, 2) 'valeur est égale à ce que contient la cellule B2 (1ere ligne, 2e colonne)
longueur = Len(a) 'longueur définit le nombre de caractères contenu dans a
nbre = 1


Do While nbre < 4 'permet de boucler afin de supprimer les 3 premières valeurs
Do While Left(valeur, 1) <> ";" 'détermine quelle est la première valeur à gauche de a et la boucle tourne tant que ce n'est pas un ;
longueur = longueur - 1
valeur = Right(valeur, longueur) 'valeur est égale au cointenu de la valeur moins le caratère se trouvant à gauche
Loop
If Left(valeur, 1) = ";" Then 'on supprime le ; qui es tle premier caractère de valeur
longueur = longueur - 1
valeur = Right(valeur, longueur)
End If
nbre = nbre + 1
Loop

If Right(valeur, 1) = ";" Then ' fait la même chose que précédemment sauf que cela supprime la dernière donnée
longueur = longueur - 1
valeur = Left(valeur, longueur)
End If
Do While Right(valeur, 1) <> ";"
longueur = longueur - 1
valeur = Left(valeur, b)
Loop

If Right(valeur, 1) = ";" Then
longueur = longueur - 1
valeur = Left(valeur, longueur)
End If
Cells(1, 1) = valeur


End Sub
Ajouter un commentaire
Réponse
+0
moins plus
Salut Gord21,

Ma chaîne de valeurs se trouve dans la cellule A300,
La chaîne se termine toujours par ";"
Mais je souhaite seulement supprimer, pas le réecrire dans une autre cellule

merci pour ton aide
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

A essayer (mettre A300 au lieu de A1)

Sub supprimer_dernier()
tablo = Split(Range("A1"), ";")
If UBound(tablo) - 1 > 1 Then
    For cptr = 0 To UBound(tablo) - 2
        texto = texto & tablo(cptr) & ";"
    Next
Else
    MsgBox "2 nombres mini "
    Exit Sub
End If
Range("A1") = texto
End Sub

'-------------------------------------------------------------------

Sub supprimer_3prem()
tablo = Split(Range("A1"), ";")
If UBound(tablo) - 1 > 3 Then
    For cptr = 3 To UBound(tablo) - 1
        texto = texto & tablo(cptr) & ";"
    Next
Else
    MsgBox "3 nombres mini "
    Exit Sub
End If
Range("A1") = texto
End Sub
Ajouter un commentaire
Réponse
+0
moins plus
Merci à tous pour ces réponses si rapide

Que dire Michel, ta procédure marche à merveille ! merci beaucoup

Melanie j'ai essayé ta procédure, mais l'erreur 5 apparait.
A quoi correspond "a", c'est ma chaîne de caractère ? Je vais continuer à chercher, j'aimerais bien savoir le faire !

Merci
Ajouter un commentaire
Ce document intitulé «  Effacer une partie d'une cellule Excel  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.