OVH Cloud OVH Cloud

Macro Rechercher pose PB si chiffre non Trouvé

22 réponses
Avatar
lograd
Bonjour,
j'ai une macro qui me permet d'effectuer une recherche sur la colonne
"A" de ma Feuille "CEU".
J' ai une erreur lorsque celle-ci ne trouve pas le chiffre demander, au
lieu de mettre : "Pas trouv=E9".
Si quelqu'un d'expert, et je sais qu'il y en a, peu m'aider, merci.

Apr=E8s debbogage la ligne : ' If UCase(Cel) =3D UCase(Str_crit=E8re) Then
' est en jaune.

Sub Recherche()
Dim Str_Plage As String
Dim Cel As Range
Dim Feuil As Worksheet
Dim Str_crit=E8re As String
Dim X As Byte

Str_Plage =3D "A3:A65536"
Str_crit=E8re =3D InputBox("CEU =E0 rechercher ?")
For Each Feuil In Sheets
For Each Cel In Feuil.Range(Str_Plage)
If UCase(Cel) =3D UCase(Str_crit=E8re) Then
X =3D MsgBox("CEU """ & Str_crit=E8re & """ trouv=E9 :" & Chr(13) & _
"Sur la feuille : " & Feuil.Name & Chr(13) & _
"=E0 l'adresse : " & Cel.Address(0, 0) & Chr(13) & Chr(13) & _
"Oui : on arr=EAte la recherche et on y va" & Chr(13) & _
"Non : on continue la recherche " & Chr(13) & _
"Annuler : on arr=EAte la recherche" & Chr(13), vbDefaultButton1 + _
vbQuestion + vbYesNoCancel, "MOT TROUV=C9")
Select Case X
Case 6
Feuil.Activate
Cel.Activate
Exit Sub
Case 2 'annuler on sort
Exit Sub
Case Else 'Non=3D7
'on fait rien, mais on pourrait
End Select
End If
Next Cel
Next Feuil
MsgBox ("pas trouv=E9")
End Sub

2 réponses

1 2 3
Avatar
Daniel
Mais oui, on va y arriver. Au temps pour moi, remplace :
Feuil.Activate
par :
Sheets("CEU").Activate
Désolé.
Daniel
PS. "Erreur d'execution 424", pour moi, c'est un fourre tout, je traduis par
erreur tout court. (il y a sans nul doute une explication intelligente et
pertinente mais je ne la connais pas).
"lograd" a écrit dans le message de news:

Bonsoir Daniel,
impeccable, maintenant lorsque le chiffre cherché n'est pas trouvé il
me dit "pas trouvé"
Par contre cela plante lorsque je répond "oui" pour aller sur la
cellule ou il y a le chiffre trouvé.
Voila ce que cela dit :
Erreur d'execution 424
puis:

: Str_critère : "00128" : String
: X : 6 : Byte
: Feuil : Vide : Variant/Empty.
Bien sur pour une recherche d'un chiffre qui existe.

Je suis perdu, cela fonctionnait pour me rendre au chiffre existant
avant ta modif (bien du reste), alors pourquoi cela bug, et que veut
dire "erreur424" ?

Merci encore pour tes lumières.




Bonsoir.
Essaie :

Sub Recherche()
Dim Str_Plage As String
Dim Cel As Range
Dim Str_critère As String
Dim X As Byte

Str_Plage = "CEU!A3:A65536"
Str_critère = InputBox("CEU à rechercher ?")
For Each Cel In Range(Str_Plage)
If UCase(Cel) = UCase(Str_critère) Then
X = MsgBox("CEU """ & Str_critère & """ trouvé :" & Chr(13) & _
"à l'adresse : " & Cel.Address(0, 0) & Chr(13) & Chr(13) & _
"Oui : on arrête la recherche et on y va" & Chr(13) & _
"Non : on continue la recherche " & Chr(13) & _
"Annuler : on arrête la recherche" & Chr(13), vbDefaultButton1 + _
vbQuestion + vbYesNoCancel, "MOT TROUVÉ")
Select Case X
Case 6
Feuil.Activate
Cel.Activate
Exit Sub
Case 2 'annuler on sort
Exit Sub
Case Else 'Non=7
'on fait rien, mais on pourrait
End Select
End If
Next Cel
MsgBox ("pas trouvé")
End Sub

"lograd" a écrit dans le message de news:

Bonjour daniel,
en fait dans la recherche la macro va aussi dans la feuille Macro1 et
ma cellule A26 c'est celle de la Macro XL4, d'ou l'erreur.
Il faudrait que ma recherche ne soit que sur ma Feuille "CEU" et non
tout le calsseur.
As tu une idée pour modifier la macro VBA dans se cas ?
Merci et bonne journée.


Bonjour.
Je vais être absent pour la journée. Qu'est-ce que tu entends par "des
feuilles macro" ? des feuilles macro XL4 ? Comment te génèrent-elles des
erreurs ?
Daniel
"lograd" a écrit dans le message de news:

Daniel peux tu me répondre SVP,
Comment executer ma macro sans que les deux feuilles de macro ne
generent des erreurs?

En fait je viens de comprendre.
J'ai des feuilles Macro qui générent les erreurs.
Alors Pourquoi ?


La valeur de A26, c'est quoi ?
Daniel
"lograd" a écrit dans le message de news:

Merci,
cela me donne : : Var3 : "$A$26" : Variant/String
Si je comprend bien c'est la cellule A26 qui fait tout planter ?
Mais en A26 il n'y a rien qui cloche, c'est pareille que dans les
autres cellule de la colonne A.
Juste la recopie de la cellule J.
Donc je COULE.
A tu une Idée ?



OK, je regarde.
Encore merci pour tes lumieres.


L'erreur vient de la cellule qui a pour valeur "VRAI". Pour la
localiser
Ajoute Var3Îl.address
après Var2=UCase(Str_critère)
Cela va te donner l'adresse de la cellule qui fait planter.
Il te restera à savoir pourquoi elle a cette valeur.
Daniel
"lograd" a écrit dans le message de
news:

Les valeurs de :
: Var1 : "VRAI" : Variant/String
: Var2 : "00140" : Variant/String

En espérant que cela t'aide à m'aider.


Dans l'éditeur Visual Basic, clique sur Affichage / Fenêtre
variables
locales. Tu obtiens une nouvelle fenêtre affichant la valeur
de
tes
variables. Tu peux également positionner le curseur de la
souris
(sans
cliquer), dans le code, sur la variable dont tu veux connaître
la
valeur.
Daniel
"lograd" a écrit dans le message de
news:

J'ai bien placé les deux lignes
Var1=UCase(Cel)
Var2=UCase(Str_critère)
avant If UCase(Cel) = UCase(Str_critère) Then
et voila le message d'erreur:
"Erreur d'execution 13
incompatibilité de type"
et c'est tout.
Ou veux tu que je releve les valeurs VAR1 et VAR2 lorsque cela
plante
?
Merci.Je patoge un peu :)




Avant la ligne :
If UCase(Cel) = UCase(Str_critère) Then
Mets :
Var1=UCase(Cel)
Var2=UCase(Str_critère)
Quand la macro plante, relève les valeurs de Var1 et Var2 et
reviens
les
poster.
Daniel
"lograd" a écrit dans le message
de
news:

Bonjour Daniel,

en fait dans ma colonne A les chiffres proviennent d'une
autre
cellule.
je m'explique:
En colonne I il y a une serie de formule et en colonne J
aussi.
Mes chiffres de la colonne A proviennent de J, de la maniere
suivante :
A3=J3 ; A4=J4 etc..
EN I : I3=si(F2>0;125;"") reference de depart pour n° auto
en
colonne
A.
Puis I4=si(F3>0;A3+1;"") , I5=si(F4>0;A4+1;"") etc.
Enfin en J : En J3 =TEXTE(I3;"00000") , en I4
=TEXTE(I4;"00000")
etc
D'ou en A3=J3 ; A4=J4.
Pourquoi tout cela car je dois avoir des chiffres de la
forme
"00125"
en colonne A.
Merci de ton aide.
En esperant que tu es compris.



Bonjour.
Ta macro s'exécute normalement chez moi.
Quelles sont les valeurs de Str_critère et de la cellule
au
moment
du
plantage ?
Cordialement.
Daniel
"lograd" a écrit dans le message
de
news:

Bonjour,
j'ai une macro qui me permet d'effectuer une recherche sur
la
colonne
"A" de ma Feuille "CEU".
J' ai une erreur lorsque celle-ci ne trouve pas le chiffre
demander,
au
lieu de mettre : "Pas trouvé".
Si quelqu'un d'expert, et je sais qu'il y en a, peu
m'aider,
merci.

Après debbogage la ligne : ' If UCase(Cel) > > > > > > > > > UCase(Str_critère)
Then
' est en jaune.

Sub Recherche()
Dim Str_Plage As String
Dim Cel As Range
Dim Feuil As Worksheet
Dim Str_critère As String
Dim X As Byte

Str_Plage = "A3:A65536"
Str_critère = InputBox("CEU à rechercher ?")
For Each Feuil In Sheets
For Each Cel In Feuil.Range(Str_Plage)
If UCase(Cel) = UCase(Str_critère) Then
X = MsgBox("CEU """ & Str_critère & """ trouvé :" &
Chr(13)
&
_
"Sur la feuille : " & Feuil.Name & Chr(13) & _
"à l'adresse : " & Cel.Address(0, 0) & Chr(13) & Chr(13) &
_
"Oui : on arrête la recherche et on y va" & Chr(13) & _
"Non : on continue la recherche " & Chr(13) & _
"Annuler : on arrête la recherche" & Chr(13),
vbDefaultButton1
+ _
vbQuestion + vbYesNoCancel, "MOT TROUVÉ")
Select Case X
Case 6
Feuil.Activate
Cel.Activate
Exit Sub
Case 2 'annuler on sort
Exit Sub
Case Else 'Non=7
'on fait rien, mais on pourrait
End Select
End If
Next Cel
Next Feuil
MsgBox ("pas trouvé")
End Sub


















Avatar
lograd
Salut Daniel,
Hourrra !!!!!!! c'est OK, tout marche très bien.
Merci pour l'astuce : Sheets("CEU").Active
mais j'ai résolu le probléme avant, simplement en supprimant
Feuil.Activate
Et le tour était joué.

Mais encore merci pour ton entêtement et ton aide très précieuse.
Enfin tout fonctionne.
Au plaisir.
PS: je débute en VBA, donc pardon pour mais erreurs de débutant.



Mais oui, on va y arriver. Au temps pour moi, remplace :
Feuil.Activate
par :
Sheets("CEU").Activate
Désolé.
Daniel
PS. "Erreur d'execution 424", pour moi, c'est un fourre tout, je traduis par
erreur tout court. (il y a sans nul doute une explication intelligente et
pertinente mais je ne la connais pas).
"lograd" a écrit dans le message de news:

Bonsoir Daniel,
impeccable, maintenant lorsque le chiffre cherché n'est pas trouvé il
me dit "pas trouvé"
Par contre cela plante lorsque je répond "oui" pour aller sur la
cellule ou il y a le chiffre trouvé.
Voila ce que cela dit :
Erreur d'execution 424
puis:

: Str_critère : "00128" : String
: X : 6 : Byte
: Feuil : Vide : Variant/Empty.
Bien sur pour une recherche d'un chiffre qui existe.

Je suis perdu, cela fonctionnait pour me rendre au chiffre existant
avant ta modif (bien du reste), alors pourquoi cela bug, et que veut
dire "erreur424" ?

Merci encore pour tes lumières.




Bonsoir.
Essaie :

Sub Recherche()
Dim Str_Plage As String
Dim Cel As Range
Dim Str_critère As String
Dim X As Byte

Str_Plage = "CEU!A3:A65536"
Str_critère = InputBox("CEU à rechercher ?")
For Each Cel In Range(Str_Plage)
If UCase(Cel) = UCase(Str_critère) Then
X = MsgBox("CEU """ & Str_critère & """ trouvé :" & Chr(13) & _
"à l'adresse : " & Cel.Address(0, 0) & Chr(13) & Chr(13) & _
"Oui : on arrête la recherche et on y va" & Chr(13) & _
"Non : on continue la recherche " & Chr(13) & _
"Annuler : on arrête la recherche" & Chr(13), vbDefaultButton1 + _
vbQuestion + vbYesNoCancel, "MOT TROUVÉ")
Select Case X
Case 6
Feuil.Activate
Cel.Activate
Exit Sub
Case 2 'annuler on sort
Exit Sub
Case Else 'Non=7
'on fait rien, mais on pourrait
End Select
End If
Next Cel
MsgBox ("pas trouvé")
End Sub

"lograd" a écrit dans le message de news:

Bonjour daniel,
en fait dans la recherche la macro va aussi dans la feuille Macro1 et
ma cellule A26 c'est celle de la Macro XL4, d'ou l'erreur.
Il faudrait que ma recherche ne soit que sur ma Feuille "CEU" et non
tout le calsseur.
As tu une idée pour modifier la macro VBA dans se cas ?
Merci et bonne journée.


Bonjour.
Je vais être absent pour la journée. Qu'est-ce que tu entends par "des
feuilles macro" ? des feuilles macro XL4 ? Comment te génèrent-el les des
erreurs ?
Daniel
"lograd" a écrit dans le message de news:

Daniel peux tu me répondre SVP,
Comment executer ma macro sans que les deux feuilles de macro ne
generent des erreurs?

En fait je viens de comprendre.
J'ai des feuilles Macro qui générent les erreurs.
Alors Pourquoi ?


La valeur de A26, c'est quoi ?
Daniel
"lograd" a écrit dans le message de n ews:

Merci,
cela me donne : : Var3 : "$A$26" : Variant/String
Si je comprend bien c'est la cellule A26 qui fait tout planter ?
Mais en A26 il n'y a rien qui cloche, c'est pareille que dans les
autres cellule de la colonne A.
Juste la recopie de la cellule J.
Donc je COULE.
A tu une Idée ?



OK, je regarde.
Encore merci pour tes lumieres.


L'erreur vient de la cellule qui a pour valeur "VRAI". Pour la
localiser
Ajoute Var3Îl.address
après Var2=UCase(Str_critère)
Cela va te donner l'adresse de la cellule qui fait planter.
Il te restera à savoir pourquoi elle a cette valeur.
Daniel
"lograd" a écrit dans le message de
news:

Les valeurs de :
: Var1 : "VRAI" : Variant/String
: Var2 : "00140" : Variant/String

En espérant que cela t'aide à m'aider.


Dans l'éditeur Visual Basic, clique sur Affichage / Fen être
variables
locales. Tu obtiens une nouvelle fenêtre affichant la val eur
de
tes
variables. Tu peux également positionner le curseur de la
souris
(sans
cliquer), dans le code, sur la variable dont tu veux conna ître
la
valeur.
Daniel
"lograd" a écrit dans le messag e de
news:

J'ai bien placé les deux lignes
Var1=UCase(Cel)
Var2=UCase(Str_critère)
avant If UCase(Cel) = UCase(Str_critère) Then
et voila le message d'erreur:
"Erreur d'execution 13
incompatibilité de type"
et c'est tout.
Ou veux tu que je releve les valeurs VAR1 et VAR2 lorsque c ela
plante
?
Merci.Je patoge un peu :)




Avant la ligne :
If UCase(Cel) = UCase(Str_critère) Then
Mets :
Var1=UCase(Cel)
Var2=UCase(Str_critère)
Quand la macro plante, relève les valeurs de Var1 et Va r2 et
reviens
les
poster.
Daniel
"lograd" a écrit dans le mess age
de
news:

Bonjour Daniel,

en fait dans ma colonne A les chiffres proviennent d'une
autre
cellule.
je m'explique:
En colonne I il y a une serie de formule et en colonne J
aussi.
Mes chiffres de la colonne A proviennent de J, de la mani ere
suivante :
A3=J3 ; A4=J4 etc..
EN I : I3=si(F2>0;125;"") reference de depart pour n° auto
en
colonne
A.
Puis I4=si(F3>0;A3+1;"") , I5=si(F4>0;A4+1;"") etc.
Enfin en J : En J3 =TEXTE(I3;"00000") , en I4
=TEXTE(I4;"00000")
etc
D'ou en A3=J3 ; A4=J4.
Pourquoi tout cela car je dois avoir des chiffres de la
forme
"00125"
en colonne A.
Merci de ton aide.
En esperant que tu es compris.



Bonjour.
Ta macro s'exécute normalement chez moi.
Quelles sont les valeurs de Str_critère et de la cell ule
au
moment
du
plantage ?
Cordialement.
Daniel
"lograd" a écrit dans le me ssage
de
news:

Bonjour,
j'ai une macro qui me permet d'effectuer une recherche sur
la
colonne
"A" de ma Feuille "CEU".
J' ai une erreur lorsque celle-ci ne trouve pas le chif fre
demander,
au
lieu de mettre : "Pas trouvé".
Si quelqu'un d'expert, et je sais qu'il y en a, peu
m'aider,
merci.

Après debbogage la ligne : ' If UCase(Cel) =
UCase(Str_critère)
Then
' est en jaune.

Sub Recherche()
Dim Str_Plage As String
Dim Cel As Range
Dim Feuil As Worksheet
Dim Str_critère As String
Dim X As Byte

Str_Plage = "A3:A65536"
Str_critère = InputBox("CEU à rechercher ?")
For Each Feuil In Sheets
For Each Cel In Feuil.Range(Str_Plage)
If UCase(Cel) = UCase(Str_critère) Then
X = MsgBox("CEU """ & Str_critère & """ trouvé :" &
Chr(13)
&
_
"Sur la feuille : " & Feuil.Name & Chr(13) & _
"à l'adresse : " & Cel.Address(0, 0) & Chr(13) & Chr( 13) &
_
"Oui : on arrête la recherche et on y va" & Chr(13) & _
"Non : on continue la recherche " & Chr(13) & _
"Annuler : on arrête la recherche" & Chr(13),
vbDefaultButton1
+ _
vbQuestion + vbYesNoCancel, "MOT TROUVÉ")
Select Case X
Case 6
Feuil.Activate
Cel.Activate
Exit Sub
Case 2 'annuler on sort
Exit Sub
Case Else 'Non=7
'on fait rien, mais on pourrait
End Select
End If
Next Cel
Next Feuil
MsgBox ("pas trouvé")
End Sub




















1 2 3