A voir également:
- Effacer une partie d'une cellule Excel
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Déplacer une colonne excel - Guide
- Liste déroulante excel - Guide
- Verrouiller une cellule excel - Guide
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
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
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
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 313
12 janv. 2010 à 14:19
12 janv. 2010 à 14:19
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