XL 2013 Utilisé deux CommandButton_Click dans la même feuil

  • Initiateur de la discussion Initiateur de la discussion Nico77
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Nico77

XLDnaute Nouveau
Bonjour

Le code ci-dessous fonctionne très bien; pour une recherche sur la colonne B:B de ma page code.

J'aimerai pouvoir utilisé le même code pour la colonne C:C (RechercheRef) ; mais attention le résultat est sur la même page que recherche(Mot).
Le bouton CommandButton_Click() pour recherche(Mot) et le bouton CommandButton_ClickRef() pour rechercheRef sont sur la même page.

Je sais que de mètre "With ws.Columns("B:C").Rows" fonctionne pour les deux colonnes. Mais il me faudrait une recherche uniques pour chaque colonnes. Car il y a parfois des Mots et Ref identique il me faut pas les deux.


Merci de votre temps.



Code dans la page:

VB:
Sub CommandButton_Click()
   Sheets("page").Select
   Range("B3:F400").Select
   Selection.ClearContents

Sheets("page").Select
reponse = InputBox("mot a chercher  :")
Range("A9:A" & Range("A65536").End(xlUp).Row).ClearContents
If reponse = "" Then Exit Sub
Call recherche(reponse)

End Sub

[U]Code dans le module:[/U]

Sub recherche(mot)
   
ligne = 3
For Each ws In Sheets
If ws.Name <> "Feuil Prix" Then
If ws.Name <> "Prix Vélo Psg" Then
If ws.Name <> "Prix Vélo Psg+code" Then
If ws.Name <> "Trottinette" Then
If ws.Name <> "Fac" Then

With ws.Columns("B:B").Rows  'UNIQUEMENT LA COLONNE
Set c = .Find(mot, LookIn:=xlValues, lookat:=xlPart)
Set c = .Find(mot, LookIn:=xlValues, lookat:=xlPart)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Sheets("page").Cells(ligne, 4).Select
Selection.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
ws.Name & "!" & c.Address, TextToDisplay:=c.Value

Sheets("page").Cells(ligne, 3) = c.Offset(0, -1) 'codes
Sheets("page").Cells(ligne, 5) = c.Offset(0, 2)   'prix
Sheets("page").Cells(ligne, 2) = c.Offset(0, 1)   'réference
ligne = ligne + 1
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
trouve = True
End If
End With
End If
End If
End If
End If
End If
Next ws
If Not trouve Then MsgBox ("Pas de " & "mot" & " trouvé dans ce fichier")

End Sub
 
Dernière modification par un modérateur:
Bonjour,

Je suis étonné que personne ne vous ai dit qu'il fallait TOUJOURS mettre le code donné entre balises 😒

Pour ce que vous demandez, vous pouvez très bien l'intégrer comme variable supplémentaire à votre Sub()

VB:
Sub recherche(Mot As String, PlageColonne As String)
  ligne = 3
  For Each ws In Sheets
    ' Si la feuille nommée n'est l'une d'entre elles
    If InStr(1, "Feuil Prix, Prix Vélo Psg, Prix Vélo Psg+code, Trottinette, Fac", ws.Name) = 0 Then
    '
      With ws.Range(PlageColonne).Rows                'UNIQUEMENT LA COLONNE
        Set c = .Find(Mot, LookIn:=xlValues, lookat:=xlPart)
        Set c = .Find(Mot, LookIn:=xlValues, lookat:=xlPart)
        If Not c Is Nothing Then
          firstAddress = c.Address
          Do
            Sheets("page").Cells(ligne, 4).Select
            Selection.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
                                     ws.Name & "!" & c.Address, TextToDisplay:=c.Value

            Sheets("page").Cells(ligne, 3) = c.Offset(0, -1) 'codes
            Sheets("page").Cells(ligne, 5) = c.Offset(0, 2) 'prix
            Sheets("page").Cells(ligne, 2) = c.Offset(0, 1) 'réference
            ligne = ligne + 1
            Set c = .FindNext(c)
          Loop While Not c Is Nothing And c.Address <> firstAddress
          trouve = True
        End If
      End With
    End If
  Next ws
  If Not trouve Then MsgBox ("Pas de " & "mot" & " trouvé dans ce fichier")
End Sub

A+
 
Bonsoir
d'accords je pousse un peu mais faire attention au méthodes vba utilisées
la fonction instr
VB:
If InStr(1, "Feuil Prix, Prix Vélo Psg, Prix Vélo Psg+code, Trottinette, Fac", ws.Name) = 0 Then
si j'ai plusieurs feuilles similaires
Feuil Prix
Feuil Prix Net
Prix Vélo Psg
Prix Vélo Psgx
Prix Vélo Psg+code
Prix Vélo Psg+code+marque
Trottinette
Trottinette 2

etc..etc..
tout ces noms vont matcher avec instr
maintenant si je fait ça
Code:
If InStr(1, ", Feuil Prix, Prix Vélo Psg, Prix Vélo Psg+code, Trottinette, Fac,", ", " & ws.Name & ",")
ceux que j'ai ajouté au dessus dans la liste ne matcheront pas
autrement dit on peut très bien déterminer clairement le début et la fin de la chaine valable
une sorte de multi like amélioré
d'ailleurs on peut très bien le faire avec un like
c'est ce que j’appelle les like inversés que j'utilise très souvent

voila c’était juste en passant
patrick
 
Dernière édition:
Bonsoir @wDog66
oui des fonctions existe pour les feuilles tu en trouves a la pelle
j'en ai quelques une de mon cru aussi
mais en l’occurrence dans cet exercice ce n'est pas le sujet puisque l'on boucle sur toutes les feuilles pour excepter justement ces noms
donc le fait de savoir si une de ces feuilles existe on s'en fou un peu en fait
donc ton idée du multi instr est très bien sauf qu'il faut être précis comme je l'ai dit pourvoir dans la chaine compilé de noms déterminer clairement les début et fin de nom c'est ce que je fait en plaçant intelligemment les virgules et espaces
en les testant AVEC !! dans les noms
mon intervention était a caractère pedago
je ne remet pas en cause le principe dont je suis moi même adepte (je ne l'ai jamais fait avec instr )mais a marche aussi

je dévie un peu du sujet mais un petit kado pour toi
une de mes préférées
VB:
Sub test()
MsgBox SheetsExist("Feuil2")
End Sub

Function SheetsExist(nom As String)
SheetsExist = TypeName(Evaluate(nom & "!A1")) = "Range"
End Function
patrick
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
603
Réponses
4
Affichages
249
Retour