Effacer une partie d'une cellule Excel

Fermé
Quentin - 12 janv. 2010 à 12:40
 Quentin - 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
A voir également:

5 réponses

Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289
12 janv. 2010 à 13:03
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

0
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
0
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
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
12 janv. 2010 à 14:19
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
0