OVH Cloud OVH Cloud

vba à tatons

3 réponses
Avatar
JC2
salut,
je cause si mal le vba que les propos qui suivent vont vous paraitre
risibles pour le moins. m'enfin çà marche pas quoi. au 2eme paragraphe, il
se plante avec une error 91 que j'arrive pas à scratcher (c'est normal, je
ne connais pas un traitre mot de vb)
en plus clair, il boucle bien sur "toto", puis sur "titi", mais quand y'a
plus de "titi", il me sort de l"error 91, au lieu de foncer sur Flag2.

Sub Macro1()
'
Range("A1").Select
For i = 1 To 100
On Error GoTo Flag1
Cells.Find(What:="toto", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
ActiveCell.Rows("1:3").EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Select
Next i
'
Flag1:
Range("A1").Select
For i = 1 To 200
On Error GoTo Flag2
Cells.Find(What:="titi", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Select
Next i
'
Flag2:
Range("A1").Select
For i = 1 To 200
On Error GoTo Flag3
Cells.Find(What:="tutu", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Select
Next i
'
Flag3:
End Sub



Si ce n'était un effet de votre bonté ... :))

3 réponses

Avatar
...Patrick
Que cherches tu exactement à faire ???

..PAtrick

"JC2" a écrit dans le message de news:
#
salut,
je cause si mal le vba que les propos qui suivent vont vous paraitre
risibles pour le moins. m'enfin çà marche pas quoi. au 2eme paragraphe, il
se plante avec une error 91 que j'arrive pas à scratcher (c'est normal, je
ne connais pas un traitre mot de vb)
en plus clair, il boucle bien sur "toto", puis sur "titi", mais quand y'a
plus de "titi", il me sort de l"error 91, au lieu de foncer sur Flag2.

Sub Macro1()
'
Range("A1").Select
For i = 1 To 100
On Error GoTo Flag1
Cells.Find(What:="toto", After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse).Activate
ActiveCell.Rows("1:3").EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Select
Next i
'
Flag1:
Range("A1").Select
For i = 1 To 200
On Error GoTo Flag2
Cells.Find(What:="titi", After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse).Activate
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Select
Next i
'
Flag2:
Range("A1").Select
For i = 1 To 200
On Error GoTo Flag3
Cells.Find(What:="tutu", After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse).Activate
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Select
Next i
'
Flag3:
End Sub



Si ce n'était un effet de votre bonté ... :))




Avatar
Pierre Jagut
Bonsoir,

Je ne suis pas un pro de VB non plus, mais en regardant dans l'aide
(double-clic sur "Find" et tape "F1"), il indique dans l'exemple un moyen de
tester la fin d'une recherche plutôt que le "On Error GoTo ...".
Il s'agit de mettre le résultat de la recherche dans une variable, et de
tester si le contenu de cette variable contient Nothing ou pas.
Cela doit donner un truc comme cela :

Dim Test
Test = Cells.Find(...)
Do while (Test <> Nothing)
...
TestÎlls.FindNext
Loop
...

Essaye comme cela, ce sera plus propre.
Pierre.

"JC2" a écrit dans le message de
news:%
salut,
je cause si mal le vba que les propos qui suivent vont vous paraitre
risibles pour le moins. m'enfin çà marche pas quoi. au 2eme paragraphe, il
se plante avec une error 91 que j'arrive pas à scratcher (c'est normal, je
ne connais pas un traitre mot de vb)
en plus clair, il boucle bien sur "toto", puis sur "titi", mais quand y'a
plus de "titi", il me sort de l"error 91, au lieu de foncer sur Flag2.

Sub Macro1()
'
Range("A1").Select
For i = 1 To 100
On Error GoTo Flag1
Cells.Find(What:="toto", After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse).Activate
ActiveCell.Rows("1:3").EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Select
Next i
'
Flag1:
Range("A1").Select
For i = 1 To 200
On Error GoTo Flag2
Cells.Find(What:="titi", After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse).Activate
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Select
Next i
'
Flag2:
Range("A1").Select
For i = 1 To 200
On Error GoTo Flag3
Cells.Find(What:="tutu", After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse).Activate
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Select
Next i
'
Flag3:
End Sub



Si ce n'était un effet de votre bonté ... :))




Avatar
JC2
c'est effectivement plus propre, et çà fonctionne !
merci :)

"Pierre Jagut" a écrit dans le message de
news:bg6cor$fm6$
Bonsoir,

Je ne suis pas un pro de VB non plus, mais en regardant dans l'aide
(double-clic sur "Find" et tape "F1"), il indique dans l'exemple un moyen
de

tester la fin d'une recherche plutôt que le "On Error GoTo ...".
Il s'agit de mettre le résultat de la recherche dans une variable, et de
tester si le contenu de cette variable contient Nothing ou pas.
Cela doit donner un truc comme cela :

Dim Test
Test = Cells.Find(...)
Do while (Test <> Nothing)
...
TestÎlls.FindNext
Loop
...

Essaye comme cela, ce sera plus propre.
Pierre.

"JC2" a écrit dans le message de
news:%
salut,
je cause si mal le vba que les propos qui suivent vont vous paraitre
risibles pour le moins. m'enfin çà marche pas quoi. au 2eme paragraphe,
il


se plante avec une error 91 que j'arrive pas à scratcher (c'est normal,
je


ne connais pas un traitre mot de vb)
en plus clair, il boucle bien sur "toto", puis sur "titi", mais quand
y'a


plus de "titi", il me sort de l"error 91, au lieu de foncer sur Flag2.

Sub Macro1()
'
Range("A1").Select
For i = 1 To 100
On Error GoTo Flag1
Cells.Find(What:="toto", After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse).Activate
ActiveCell.Rows("1:3").EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Select
Next i
'
Flag1:
Range("A1").Select
For i = 1 To 200
On Error GoTo Flag2
Cells.Find(What:="titi", After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse).Activate
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Select
Next i
'
Flag2:
Range("A1").Select
For i = 1 To 200
On Error GoTo Flag3
Cells.Find(What:="tutu", After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse).Activate
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Select
Next i
'
Flag3:
End Sub



Si ce n'était un effet de votre bonté ... :))