Quoi faire de Activate ?

Le
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:¬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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FS
Le #20404221
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.




Jacky
Le #20404651
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" 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.




Publicité
Poster une réponse
Anonyme