Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Quoi faire de Activate ?

2 réponses
Avatar
Olivier
Bonjour,
j'ai deux questions qui sont liées :
J'ai dans une feuille en colonne D des noms dont certains contiennent une
virgule (ou plusieurs).
Je voudrais pour ces noms là : supprimer le nom avant la virgule et copier
la ligne qui contient cette virgule avec ce nouveau nom.
Exemple :
ligne 1 : A1 | B1 |C1 | toto
ligne 2 : A2 | B2 |C2 | tata
ligne 3 : A3 | B3 |C3 | tutu,tete
ligne 4 : A4 | B4 |C4| titi
je veux obtenir
ligne 1 : A1 | B1 |C1 | toto
ligne 2 : A2 | B2 |C2 | tata
ligne 3 : A3 | B3 |C3 | tutu
ligne 4 : A3 | B3 |C3 |tete
ligne 5 : A4 | B4 |C4| titi
J'ai essayé avec l'enregistreur de macro. J'obtiens ceci
Cells.Find(What:=",", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:=False _
, SearchFormat:=False).Activate
pour la fonction rechercher.
En clair il m'active la cellule contenant une virgule.
Mais je ne sais pas comment agir dessus, pour, par exemple, retrouver le
numéro de la ligne (cells.row ; activate.rows,.. ?) et le contenu de la
cellule en question.

Merci pour votre aide.

2 réponses

Avatar
FS
Bonsoir,

Une première approche (parmi d'autres) :

Sub Découpe()
Dim cell As Range
For Each cell In Range("D1:D" & _
Cells(Rows.Count, "D").End(xlUp).Row)
If UBound(Split(cell.Text, ",")) > 0 Then
cell(2).EntireRow.Insert xlShiftDown
Range("A" & cell.Row + 1 & ":C" & cell.Row + 1).Value = _
Range("A" & cell.Row & ":C" & cell.Row).Value
Range("D" & cell.Row + 1).Value = Split(cell.Text, ",")(1)
cell.Value = Split(cell.Text, ",")(0)
End If
Next
End Sub

Pour les cas où il y aurait plusieurs virgules dans une cellule Dx,
précise comment il faudrait les traiter.

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

Olivier a écrit :
Bonjour,
j'ai deux questions qui sont liées :
J'ai dans une feuille en colonne D des noms dont certains contiennent une
virgule (ou plusieurs).
Je voudrais pour ces noms là : supprimer le nom avant la virgule et copier
la ligne qui contient cette virgule avec ce nouveau nom.
Exemple :
ligne 1 : A1 | B1 |C1 | toto
ligne 2 : A2 | B2 |C2 | tata
ligne 3 : A3 | B3 |C3 | tutu,tete
ligne 4 : A4 | B4 |C4| titi
je veux obtenir
ligne 1 : A1 | B1 |C1 | toto
ligne 2 : A2 | B2 |C2 | tata
ligne 3 : A3 | B3 |C3 | tutu
ligne 4 : A3 | B3 |C3 |tete
ligne 5 : A4 | B4 |C4| titi
J'ai essayé avec l'enregistreur de macro. J'obtiens ceci
Cells.Find(What:=",", After:¬tiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse _
, SearchFormat:úlse).Activate
pour la fonction rechercher.
En clair il m'active la cellule contenant une virgule.
Mais je ne sais pas comment agir dessus, pour, par exemple, retrouver le
numéro de la ligne (cells.row ; activate.rows,.. ?) et le contenu de la
cellule en question.

Merci pour votre aide.




Avatar
Jacky
Bonsoir,

Autre Méthode (un peu plus basique) mais prends en compte s'il y a plusieurs
virgules
'----------------
Sub jj()
Dim i As Long
i = 2 '*****Debut de ligne de la colonne D (A adapter)*****
While Cells(i, 4) <> ""
If Cells(i, 4) Like "*,*" Then
Rows(i + 1).Insert
Cells(i + 1, 4) = Mid(Cells(i, 4), Application.Find(",", Cells(i, 4)) + 1,
Len(Cells(i, 4)))
Cells(i, 4) = Left(Cells(i, 4), Application.Find(",", Cells(i, 4)) - 1)
End If
i = i + 1
Wend
End Sub
'---------------------
--
Salutations
JJ


"Olivier" a écrit dans le message de news:
hbq6pt$557$
Bonjour,
j'ai deux questions qui sont liées :
J'ai dans une feuille en colonne D des noms dont certains contiennent une
virgule (ou plusieurs).
Je voudrais pour ces noms là : supprimer le nom avant la virgule et copier
la ligne qui contient cette virgule avec ce nouveau nom.
Exemple :
ligne 1 : A1 | B1 |C1 | toto
ligne 2 : A2 | B2 |C2 | tata
ligne 3 : A3 | B3 |C3 | tutu,tete
ligne 4 : A4 | B4 |C4| titi
je veux obtenir
ligne 1 : A1 | B1 |C1 | toto
ligne 2 : A2 | B2 |C2 | tata
ligne 3 : A3 | B3 |C3 | tutu
ligne 4 : A3 | B3 |C3 |tete
ligne 5 : A4 | B4 |C4| titi
J'ai essayé avec l'enregistreur de macro. J'obtiens ceci
Cells.Find(What:=",", After:¬tiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:úlse _
, SearchFormat:úlse).Activate
pour la fonction rechercher.
En clair il m'active la cellule contenant une virgule.
Mais je ne sais pas comment agir dessus, pour, par exemple, retrouver le
numéro de la ligne (cells.row ; activate.rows,.. ?) et le contenu de la
cellule en question.

Merci pour votre aide.