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

boucle sur ligne

7 réponses
Avatar
jive7
Bonjour,

Est ce que quelq'un pourrait m'aider à faire une boucle qui éxecuterait la
fonction suivante :
Je voudrais que cette boucle parcourt toute la colonne "1" et uniquement
celle-ci et chaque fois qu'elle rencontre un mot particulier dans une cellule
(exemple : toto), elle préserve la ligne; dans le cas contraire elle doit
supprimer la ligne.
La difficulté principal provient du fait que les lignes vont pas deux et ma
premiére cellule qui contient le mot "toto" est fusionnée.

si certain trouve cela easy, je suis preneur, sinon je vais essayé de le
faire, et je posterai mais bon sans grand espoir. merci tous
++

7 réponses

Avatar
Daniel
Bonjour.
essaie :

Sub test()
Dim Ligne As Long
Ligne = Range("A65536").End(xlUp).Row
For i = Ligne To 1 Step -1
If Range("A" & i).Value <> "toto" Then
Range("A" & i).EntireRow.Delete
End If
Next i
End Sub

Cordialement.
Daniel
"jive7" a écrit dans le message de news:

Bonjour,

Est ce que quelq'un pourrait m'aider à faire une boucle qui éxecuterait la
fonction suivante :
Je voudrais que cette boucle parcourt toute la colonne "1" et uniquement
celle-ci et chaque fois qu'elle rencontre un mot particulier dans une
cellule
(exemple : toto), elle préserve la ligne; dans le cas contraire elle doit
supprimer la ligne.
La difficulté principal provient du fait que les lignes vont pas deux et
ma
premiére cellule qui contient le mot "toto" est fusionnée.

si certain trouve cela easy, je suis preneur, sinon je vais essayé de le
faire, et je posterai mais bon sans grand espoir. merci tous
++


Avatar
kamal
Bonjour daniel
je me suis interessé par cette fonction d'une autre façon mon cas est
un peu différent :

je prends la première cellule de deuxième ligne 2, et je la compare
à toute les cellules non vide de la ligne 5, en cas ou le contenu est
le meme je fait appel à cette fonction qui relie les deux cellules par
une ligne

**************
Function MaShape(sh As String, Debut As Range, Fin As Range) As String
Dim Gauche As Double
Dim Haut As Double
Dim FinGauche As Double
Dim FinHaut As Double
Gauche = Debut.Offset(, 1).Left
Haut = Debut.Top + (Debut.Height / 2)
FinGauche = Fin.Left
FinHaut = Fin.Top + (Fin.Height / 2)
With Worksheets(sh)
With .Shapes.AddLine(Gauche, Haut, FinGauche, FinHaut)
End With
End With
End Function

*******************************
Puis

je prends la deuxème cellule de deuxième ligne, et je la compare à
toute les cellules non vide de la ligne 5, en cas ou le contenu est le
meme je fait appel lafonction qui relie les deux cellules par une ligne

je refais la meme operation jusqu'à la cellule n de la deuxième ligne

ensuit je passe à la ligne 5 pour faire le meme traitement avec les
cellules de la ligne 5 et ceux de la ligne 7 (deux ligne vide entre les
ligne contenant les données)

je me suis perdu quand je travail avec plusieurs variable i, j etc

j'espère que j'ai bien expliquer ma question

si vous avez besoin d'un fichier excel dis moi comment je peux
l'attacher

aidez moi svp je serais très reconnaissant.
Avatar
Daniel
Bonjour.
Entre ligne 2 et ligne 5 il y a deux lignes; entre les lignes 5 et 7 il n'y
en a qu'une. Si on dit entre 5 et 8, à quelle ligne doit-on arrêter le
traitement ?
Tu peux mettre un classeur sur www.cjoint.com. Clique sur le lien et suis
les instructions.
Cordialement.
Daniel
"kamal" a écrit dans le message de news:

Bonjour daniel
je me suis interessé par cette fonction d'une autre façon mon cas est
un peu différent :

je prends la première cellule de deuxième ligne 2, et je la compare
à toute les cellules non vide de la ligne 5, en cas ou le contenu est
le meme je fait appel à cette fonction qui relie les deux cellules par
une ligne

**************
Function MaShape(sh As String, Debut As Range, Fin As Range) As String
Dim Gauche As Double
Dim Haut As Double
Dim FinGauche As Double
Dim FinHaut As Double
Gauche = Debut.Offset(, 1).Left
Haut = Debut.Top + (Debut.Height / 2)
FinGauche = Fin.Left
FinHaut = Fin.Top + (Fin.Height / 2)
With Worksheets(sh)
With .Shapes.AddLine(Gauche, Haut, FinGauche, FinHaut)
End With
End With
End Function

*******************************
Puis

je prends la deuxème cellule de deuxième ligne, et je la compare à
toute les cellules non vide de la ligne 5, en cas ou le contenu est le
meme je fait appel lafonction qui relie les deux cellules par une ligne

je refais la meme operation jusqu'à la cellule n de la deuxième ligne

ensuit je passe à la ligne 5 pour faire le meme traitement avec les
cellules de la ligne 5 et ceux de la ligne 7 (deux ligne vide entre les
ligne contenant les données)

je me suis perdu quand je travail avec plusieurs variable i, j etc

j'espère que j'ai bien expliquer ma question

si vous avez besoin d'un fichier excel dis moi comment je peux
l'attacher

aidez moi svp je serais très reconnaissant.
Avatar
kamal
merci de votre réponse
ci joint mon fichier
http://cjoint.com/?ettLtcY1kP

pour comprendre entre une ligne de donnée, il y deux ligne vide

merci encore
Avatar
Daniel
Regarde le classeur à l'adresse :
http://cjoint.com/?euaJkl4jyv
Cordialement.
Daniel
"kamal" a écrit dans le message de news:

merci de votre réponse
ci joint mon fichier
http://cjoint.com/?ettLtcY1kP

pour comprendre entre une ligne de donnée, il y deux ligne vide

merci encore
Avatar
kamal
Bonjour daniel
je te remercie pour votre réponse, le code que tu m'as envoyé
fonction bien mais il y des erreurs
je vous explique
mais en vant voilàa le code complete pour que d'autre beneficie de ce
code :

************************************
Sub test()
Dim Feuille As String, Col As Integer
Feuille = ActiveSheet.Name
For i = 2 To 52 Step 4
For j = 1 To 26
For Col = 1 To 26
If Cells(i, j) <> "" And Cells(i, j) = Cells(i,
Col).Offset(4, 0) Then
MaShape Feuille, Cells(i, j), Cells(i,
Col).Offset(4, 0)
End If
Next Col
Next j
Next i
End Sub
Function MaShape(sh As String, Debut As Range, Fin As Range) As String
Dim Gauche As Double
Dim Haut As Double
Dim FinGauche As Double
Dim FinHaut As Double
Gauche = Debut.Offset(, 1).Left
Haut = Debut.Top + (Debut.Height / 2)
FinGauche = Fin.Left
FinHaut = Fin.Top + (Fin.Height / 2)
With Worksheets(sh)
With .Shapes.AddLine(Gauche, Haut, FinGauche, FinHaut)
End With
End With
'cette fonction est envoyé par mechdenis
End Function

****************************
le code compare les cellules de ligne 2 par ceux de la ligne 6, puis
passe à comparer les cellules de ligne 6 à ceux de la ligne 10 , puis
passe à comparer ceux de la ligne 10 à ceux de laligne 14 et ainsi de
suite :
j'arrive pas a adapter le code pour comparer les cellules de la ligne 2
à ceux de 6, 10, 14 ......54 puis passe à la ligne 6 pour faire le
meme traitement

de toute façon merci bcp et le code est mis à la disposition des
internauts .
merci
Avatar
kamal
Bonjour daniel
je te remercie infiniment pour ton aide, il m'a permet d'avoir bcp de
chose
le code suivant que vous m'avez envoyé parait correct 100%, mais je
pense qu'il y un bug lor du traitement, quand je fait un analyse, je
trouve tout logique mais lors de l'execution il ne donne pas le
resultat complete

****************************************
Sub test()
Dim Feuille As String, Col As Integer
Feuille = ActiveSheet.Name
For i = 2 To 52 Step 4
For j = 1 To 26
For Col = 1 To 26
If Cells(i, j) <> "" And Cells(i, j) = Cells(i,
Col).Offset(4, 0) Then
MaShape Feuille, Cells(i, j), Cells(i,
Col).Offset(4, 0)
End If
Next Col
Next j
Next i
end sub

*************************
dans le resultat, il parait comme il ne fait pas la comparaison de la
cellule (2,1) à la cellule (18,3).

merci si vous pouvez m'expliquer plus

merci