Macro qui fonctionne plus...

Fermé
Ajt67 Messages postés 10 Date d'inscription jeudi 4 février 2016 Statut Membre Dernière intervention 4 novembre 2018 - 31 oct. 2018 à 23:59
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 - 4 nov. 2018 à 10:10
Bonsoir à tous,
Alors voilà, j'ai un classeur Excel qui me pose un problème... surtout depuis les versions Excel 2007 et 2013, j'ai une macro qui ne fonctionne plus. Le principe est simple, j'ai plusieurs onglet, un pour chaque lettre de l’alphabet et chaque onglet contient une liste de nom, un numéro respectif à chaque nom et d'autres informations. Ma macro me permettait, à partir d'une "messagebox" de rechercher le nom en ne connaissant que le numéro, ou rechercher le numéro en ne connaissant que le nom. Voilà la macro que j'utilisai :
"Private Sub CommandButton1_Click()
What = InputBox("Saisissez le nom du bateau à rechercher :")
If What = "" Then Exit Sub
For Each sht In Worksheets
sht.Activate
Set Found = sht.Cells.Find(What)
If Not Found Is Nothing Then
FirstAddress = Found.Address
Do
Found.Activate
Response = MsgBox("Continuer ?", vbYesNo + vbQuestion)
If Response = vbNo Then Exit Sub
Set Found = Cells.FindNext(After:=ActiveCell)
If Found.Address = FirstAddress Then Exit Do
Loop
End If
Next sht
MsgBox "Recherche terminée !"
End Sub"

Pourquoi cela ne fonctionne-t-il plus ?

Merci de votre aide
A voir également:

2 réponses

f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
1 nov. 2018 à 08:14
Bonjour,

Que vouliez vous faire si trouve car exit do ok, le for each continue………………………...
0
Ajt67 Messages postés 10 Date d'inscription jeudi 4 février 2016 Statut Membre Dernière intervention 4 novembre 2018
3 nov. 2018 à 06:03
Bonjour, merci de votre réponse,
Le principe du fonctionnement de ce bouton était d'afficher une boîte dans laquelle on pouvait soit saisir un numéro, soit un nom et ensuite le code cherchait dans tous les onglets si ce nom ou numéro existe déjà.

Bonne journée.
0
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 Ambassadeur 1 556
Modifié le 1 nov. 2018 à 08:46
bonjour,
1° merci d'utiliser la coloration syntaxique quand tu postes du code
2° "ne fonctionne plus": message d'erreur, comportement différent de celui que tu espères, ...?
3° ajoute "option explicit" en début de module, et déclare toutes tes variables, par exemple:
Option Explicit
' ...
Private Sub CommandButton1_Click() 
Dim What As String, sht As Worksheet, FOund As Range, FirstAddress As String, Response As Integer
'...
0
Ajt67 Messages postés 10 Date d'inscription jeudi 4 février 2016 Statut Membre Dernière intervention 4 novembre 2018
3 nov. 2018 à 06:07
Bonjour, merci de votre réponse.
Je vais tacher de faire de mon mieux car je suis pas une "foudre" en code, loin de là car je n'ai pour ainsi dire aucune connaissance, ni en Anglais et ni en programmation. Je suis autodidacte, j'ai appris dans mon coin, en lisant et en essayant.
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
3 nov. 2018 à 07:10
Bonjour,

Vous ne repondez pas au 2° de Y_be, c'est peut-être la clé du problème.
Personnellement, je vous informais que votre code, meme si Found est trouve, ne s'arrête que sur le dernier onglet..............
0
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 1 556 > f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024
3 nov. 2018 à 09:52
le code parcourt toutes les occurrences dans toutes les feuilles du classeur, et, pour chaque occurrence, propose, via msgbox, d’arrêter ou de continuer.
"exit sub" termine tout, si l'utilisateur en a décidé ainsi.
"exit do" termine la boucle d'une feuille, pour passer à la feuille suivante quand on retombe sur la première occurrence trouvée précédemment dans la feuille.
j'ai testé, tout me semble bien fonctionner.
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
3 nov. 2018 à 10:00
Salut Y_Be,

Ben, For Each sht In Worksheets Next sht, le exit Do est a l'interieur donc la recherche, meme si trouvee, va jusqu'au dernier onglet, sauf erreur de ma part!!
0
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 1 556 > Ajt67 Messages postés 10 Date d'inscription jeudi 4 février 2016 Statut Membre Dernière intervention 4 novembre 2018
3 nov. 2018 à 10:06
quelques mini changements:
Option Explicit

Private Sub CommandButton1_Click()
Dim What As String, sht As Worksheet, FOund As Range, FirstAddress As String, Response As Integer
What = InputBox("Saisissez le nom du bateau à rechercher :")
If What = "" Then Exit Sub
For Each sht In Worksheets
    Set FOund = sht.Cells.Find(What)
    If Not FOund Is Nothing Then
        sht.Activate
        FirstAddress = FOund.Address
        Do
            FOund.Activate
            Response = MsgBox("Continuer ?", vbYesNo + vbQuestion)
            If Response = vbNo Then Exit Sub
            Set FOund = sht.Cells.FindNext(After:=ActiveCell)
        Loop Until FOund.Address = FirstAddress
    End If
Next sht
MsgBox "Recherche terminée !"
End Sub
0