Effacer une partie d'une cellule Excel
Quentin
-
Quentin -
Quentin -
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
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:
- Effacer une partie d'une cellule Excel
- Déplacer une colonne excel - Guide
- Liste déroulante excel - Guide
- Bloquer une cellule excel - Guide
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
5 réponses
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
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
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
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
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
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
Bonjour,
A essayer (mettre A300 au lieu de A1)
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question