[VBA Excel] supprimer le point virgule
Fermé
ben7777
Messages postés
30
Date d'inscription
vendredi 19 mai 2006
Statut
Membre
Dernière intervention
1 août 2007
-
24 juil. 2006 à 16:28
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 27 juil. 2006 à 11:44
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 27 juil. 2006 à 11:44
Bonjour,
j'aimerai que les mots qui sont séparés par un point virgule dans ma cellule excel, apparaissent un à un dans des lignes différentes comme une énumération. En fait je voudrais exactement comme on fait avec la conversion de colonne en délimité mais avec des lignes. Et tout ca en VBA !
Merci de votre aide c'est assez urgent
Ben
j'aimerai que les mots qui sont séparés par un point virgule dans ma cellule excel, apparaissent un à un dans des lignes différentes comme une énumération. En fait je voudrais exactement comme on fait avec la conversion de colonne en délimité mais avec des lignes. Et tout ca en VBA !
Merci de votre aide c'est assez urgent
Ben
A voir également:
- [VBA Excel] supprimer le point virgule
- Liste déroulante excel - Guide
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
- Word et excel gratuit - Guide
- Supprimer pub youtube - Accueil - Streaming
7 réponses
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 718
27 juil. 2006 à 09:52
27 juil. 2006 à 09:52
bonjour
j'ai essayé de refaire la même chose pour que les champs séparés par le point virgules se mettent sur la meme ligne à présent.
C'est un peu plus compliqué effectivement à faire, voici la macro adaptée :
Sub conv_colonnes()
Dim col, car, k, j
Set col = Application.InputBox("Choisissez la colonne à convertir", "Colonne à convertir", , 100, 200, , , 8)
car = Application.InputBox("Choisissez le caractère délimiteur", "Caractère délimiteur", ";", 100, 100)
For Each c In Range(col.Address)
k = InStr(1, c.Value, car)
j = 0
Do While k > 0
j = j + 1
If Cells(c.Row, c.Column + j).Value <> "" Then Cells(c.Row, c.Column + j).EntireColumn.Insert
Cells(c.Row, c.Column + j).Value = Right(Cells(c.Row, c.Column + j - 1).Value, Len(Cells(c.Row, c.Column + j - 1).Value) - k)
Cells(c.Row, c.Column + j - 1).Value = Left(Cells(c.Row, c.Column + j - 1).Value, k - 1)
k = 0
k = InStr(k + 1, Cells(c.Row, c.Column + j).Value, car)
Loop
Next c
End Sub
Je penses que tu as vu l'intérêt du choix d'une plage à la souris pour les essais.
Bon essai et donnes nous le résultat...
j'ai essayé de refaire la même chose pour que les champs séparés par le point virgules se mettent sur la meme ligne à présent.
C'est un peu plus compliqué effectivement à faire, voici la macro adaptée :
Sub conv_colonnes()
Dim col, car, k, j
Set col = Application.InputBox("Choisissez la colonne à convertir", "Colonne à convertir", , 100, 200, , , 8)
car = Application.InputBox("Choisissez le caractère délimiteur", "Caractère délimiteur", ";", 100, 100)
For Each c In Range(col.Address)
k = InStr(1, c.Value, car)
j = 0
Do While k > 0
j = j + 1
If Cells(c.Row, c.Column + j).Value <> "" Then Cells(c.Row, c.Column + j).EntireColumn.Insert
Cells(c.Row, c.Column + j).Value = Right(Cells(c.Row, c.Column + j - 1).Value, Len(Cells(c.Row, c.Column + j - 1).Value) - k)
Cells(c.Row, c.Column + j - 1).Value = Left(Cells(c.Row, c.Column + j - 1).Value, k - 1)
k = 0
k = InStr(k + 1, Cells(c.Row, c.Column + j).Value, car)
Loop
Next c
End Sub
Je penses que tu as vu l'intérêt du choix d'une plage à la souris pour les essais.
Bon essai et donnes nous le résultat...
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 718
27 juil. 2006 à 11:44
27 juil. 2006 à 11:44
bonjour
As-tu vu la macro pour les filtres automatiques ?
Mais comment faites vous ??
Avec Excel, comme pour beaucoup d'autres choses d'ailleurs,
il faut toujours travailler pour comprendre les notions de base,
puis mettre en pratique sur les domaines adéquats.
VBA possède une aide très complète, avec des exemples,
il faut apprendre à l'utiliser et après, il n'y a plus de limite...
Au bout de quelques années de pratique, tu peux utiliser,
de façon efficace, 20% des possibilités et ensuite,
il est toujours temps d'acquèrir d'autres notions...
As-tu vu la macro pour les filtres automatiques ?
Mais comment faites vous ??
Avec Excel, comme pour beaucoup d'autres choses d'ailleurs,
il faut toujours travailler pour comprendre les notions de base,
puis mettre en pratique sur les domaines adéquats.
VBA possède une aide très complète, avec des exemples,
il faut apprendre à l'utiliser et après, il n'y a plus de limite...
Au bout de quelques années de pratique, tu peux utiliser,
de façon efficace, 20% des possibilités et ensuite,
il est toujours temps d'acquèrir d'autres notions...
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 718
24 juil. 2006 à 16:54
24 juil. 2006 à 16:54
bonjour
pour faire cela rapidement, je te propose cette macro :
Sub conv_lignes()
Dim col, car, k
Set col = Application.InputBox("Choisissez la colonne à convertir", "Colonne à convertir", , 100, 200, , , 8)
car = Application.InputBox("Choisissez le caractère délimiteur", "Caractère délimiteur", ";", 100, 100)
For Each c In Range(col.Address)
k = InStr(1, c.Value, car)
Do While k > 0
Cells(c.Row + 1, c.Column).EntireRow.Insert
Cells(c.Row + 1, c.Column).Value = Right(c.Value, Len(c.Value) - k)
Cells(c.Row, c.Column) = Left(c.Value, k - 1)
k = InStr(k + 1, c.Value, car)
Loop
Next c
End Sub
tu choisis ta plage à la souris, ton caractère délimiteur,
et la macro crée autant de lignes que nécessaire pour le choix.
les lignes qui sont tronquées ici doivent être remises sur la même.
Set col = Application.InputBox("Choisissez la colonne à convertir", "Colonne à convertir", , 100, 200, , , 8)
et
car = Application.InputBox("Choisissez le caractère délimiteur", "Caractère délimiteur", ";", 100, 100)
pour faire cela rapidement, je te propose cette macro :
Sub conv_lignes()
Dim col, car, k
Set col = Application.InputBox("Choisissez la colonne à convertir", "Colonne à convertir", , 100, 200, , , 8)
car = Application.InputBox("Choisissez le caractère délimiteur", "Caractère délimiteur", ";", 100, 100)
For Each c In Range(col.Address)
k = InStr(1, c.Value, car)
Do While k > 0
Cells(c.Row + 1, c.Column).EntireRow.Insert
Cells(c.Row + 1, c.Column).Value = Right(c.Value, Len(c.Value) - k)
Cells(c.Row, c.Column) = Left(c.Value, k - 1)
k = InStr(k + 1, c.Value, car)
Loop
Next c
End Sub
tu choisis ta plage à la souris, ton caractère délimiteur,
et la macro crée autant de lignes que nécessaire pour le choix.
les lignes qui sont tronquées ici doivent être remises sur la même.
Set col = Application.InputBox("Choisissez la colonne à convertir", "Colonne à convertir", , 100, 200, , , 8)
et
car = Application.InputBox("Choisissez le caractère délimiteur", "Caractère délimiteur", ";", 100, 100)
ben7777
Messages postés
30
Date d'inscription
vendredi 19 mai 2006
Statut
Membre
Dernière intervention
1 août 2007
2
24 juil. 2006 à 17:02
24 juil. 2006 à 17:02
alors la chapeau ! j'ai pas encore super bien analysé mais ca ma l'air parfait !
Merci beaucoup de ton aide
Merci beaucoup de ton aide
ben7777
Messages postés
30
Date d'inscription
vendredi 19 mai 2006
Statut
Membre
Dernière intervention
1 août 2007
2
24 juil. 2006 à 18:04
24 juil. 2006 à 18:04
franchement c'est ce que je voulais alors bravo et merci ! j'ai juste une petite demande, je voudrais que le reste de la ligne soit copié aussi parce que là j'ai ma nouvelle ligne mais les champs des autres colonnes sont vides alors que j'aimerai qu'ils soient dupliqués .
Si tu as une idée ....
Merci encore
Si tu as une idée ....
Merci encore
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 718
24 juil. 2006 à 18:49
24 juil. 2006 à 18:49
bonjour
après la ligne : Cells(c.Row + 1, c.Column).EntireRow.Insert
tu rajoutes cette ligne :
Cells(c.Row, 1).Resize(2, 1).EntireRow.FillDown
tout est possible avec Excel, mais il faut y passer du temps,
et avoir des raisons pour cela.
après la ligne : Cells(c.Row + 1, c.Column).EntireRow.Insert
tu rajoutes cette ligne :
Cells(c.Row, 1).Resize(2, 1).EntireRow.FillDown
tout est possible avec Excel, mais il faut y passer du temps,
et avoir des raisons pour cela.
ben7777
Messages postés
30
Date d'inscription
vendredi 19 mai 2006
Statut
Membre
Dernière intervention
1 août 2007
2
25 juil. 2006 à 10:38
25 juil. 2006 à 10:38
Merci c'est génial !
ben7777
Messages postés
30
Date d'inscription
vendredi 19 mai 2006
Statut
Membre
Dernière intervention
1 août 2007
2
26 juil. 2006 à 09:50
26 juil. 2006 à 09:50
je voulais savoir un truc : j'ai essayé de refaire la même chose pour que les champs séparés par le point virgules se mettent sur la meme ligne à présent. Alors il y a la conversion du texte en colonne avec le point virgule comme séparateur qui marche mais le problème c'est que ca me remplace le contenu des colonnes adjacentes à droite. Y a t il une solution ?
Merci ;-)
Merci ;-)
ben7777
Messages postés
30
Date d'inscription
vendredi 19 mai 2006
Statut
Membre
Dernière intervention
1 août 2007
2
27 juil. 2006 à 09:59
27 juil. 2006 à 09:59
alors là merci beaucoup ! Mais comment faites vous ??
Merci encore ca m'aide vraiment d'autant que tu es le seul à me répondre.
C'est rassurant de se dire que quand on est en stage en galère ya des gens qui peuvent toujours nous aider !
Merci ;-)
Merci encore ca m'aide vraiment d'autant que tu es le seul à me répondre.
C'est rassurant de se dire que quand on est en stage en galère ya des gens qui peuvent toujours nous aider !
Merci ;-)