modification macro recherche

xiter75

XLDnaute Nouveau
bonjour j aimerais effectuer une modification sur ma macro de recherche

la recherche se fait sur toute les cellules , colonne et feuille

et j aimerais limiter a la colonne C mais sur toutes les cellules de la colonne C et sur toute les colonne c de toute les feuilles existante sur mon doc excel
vu que j ai fait une feuille par mois .

que dois je modifier dans cette macro pour limiter la recherche

merci beaucoup




Sub Macro_Recherche3()
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 = "A1:p16" on peut supprimer
Str_critère = InputBox("Adresse à rechercher ?")
For Each Feuil In Sheets
Str_Plage = Feuil.UsedRange.Address
For Each Cel In Feuil.Range(Str_Plage)
If UCase(Cel) = UCase(Str_critère) Then
X = MsgBox("ADRESSE """ & Str_critère & """ trouvé :" & Chr(13) & _
"Sur la feuille : " & Feuil.Name & Chr(13) & _
"à l'adresse : " & Cel.Address(0, 0) & Chr(13) & Chr(13) & _
"Oui : aller a l adresse" & Chr(13) & _
"Non : on continue la recherche " & Chr(13) & _
"Annuler : on arrête la recherche" & Chr(13), vbDefaultButton1 + _
vbQuestion + vbYesNoCancel, "ADRESSE 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
 

WILFRIED

XLDnaute Impliqué
Re : modification macro recherche

Salut,

Voici ton code modifier, par contre tu utilise une méthode stricte (il faut que cela soit égal) de plus je pense qu'avec la méthode find tu aurait une meilleur rapidité. Voici dans tous les cas ton code modifier :

Code:
Sub Macro_Recherche3()
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 = "A1:P16" on peut supprimer
  Str_critère = InputBox("Adresse à rechercher ?")
  For Each Feuil In Sheets
    Str_Plage = Feuil.Range("C1").EntireColumn.Address   'permet de limité la recherche dans la colonne C
    For Each Cel In Feuil.Range(Str_Plage)
      If UCase(Cel) = UCase(Str_critère) Then
        X = MsgBox("ADRESSE """ & Str_critère & """ trouvé :" & Chr(13) & _
        "Sur la feuille : " & Feuil.Name & Chr(13) & _
        "à l'adresse : " & Cel.Address(0, 0) & Chr(13) & Chr(13) & _
        "Oui : aller a l adresse" & Chr(13) & _
        "Non : on continue la recherche " & Chr(13) & _
        "Annuler : on arrête la recherche" & Chr(13), vbDefaultButton1 + _
        vbQuestion + vbYesNoCancel, "ADRESSE 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
A+

Voici le code avec la méthode find :

Code:
Sub recherche_find()
Dim Str_Plage As String
Dim Cel As Range
Dim Feuil As Worksheet
Dim Str_critère As String
Dim X As Byte
Dim firstAddress As String
'critère de recherche
  Str_critère = InputBox("Adresse à rechercher ?")
  For Each Feuil In Sheets
    With Feuil.Range("$C:$C")
      Set Cel = .Find(Str_critère, LookIn:=xlValues)
      If Not Cel Is Nothing Then
        firstAddress = Cel.Address
        X = MsgBox("ADRESSE """ & Str_critère & """ trouvé :" & Chr(13) & _
        "Sur la feuille : " & Feuil.Name & Chr(13) & _
        "à l'adresse : " & Cel.Address(0, 0) & Chr(13) & Chr(13) & _
        "Oui : aller a l adresse" & Chr(13) & _
        "Non : on continue la recherche " & Chr(13) & _
        "Annuler : on arrête la recherche" & Chr(13), vbDefaultButton1 + _
        vbQuestion + vbYesNoCancel, "ADRESSE TROUVÉ")
        Select Case X
          Case 6
            Feuil.Activate
            Cel.Activate
            Exit Sub
          Case 2 'annuler on sort
            Exit Sub
          Case Else 'Non=7'
          Do
            Set Cel = .FindNext(Cel)
            If Not Cel Is Nothing Then
              X = MsgBox("ADRESSE """ & Str_critère & """ trouvé :" & Chr(13) & _
                  "Sur la feuille : " & Feuil.Name & Chr(13) & _
                  "à l'adresse : " & Cel.Address(0, 0) & Chr(13) & Chr(13) & _
                  "Oui : aller a l adresse" & Chr(13) & _
                  "Non : on continue la recherche " & Chr(13) & _
                  "Annuler : on arrête la recherche" & Chr(13), vbDefaultButton1 + _
                  vbQuestion + vbYesNoCancel, "ADRESSE TROUVÉ")
              Select Case X
                Case 6
                  Feuil.Activate
                  Cel.Activate
                  Exit Sub
                Case 2 'annuler on sort
                  Exit Sub
                Case Else 'Non=7'
              End Select
            End If
          Loop While Not Cel Is Nothing And Cel.Address <> firstAddress
        'on fait rien, mais on pourrait
        End Select
      End If
    End With
  Next Feuil
End Sub

Cette méthode à deux avantage : plus rapide car tu ne fait pas un test systématique des cellules et tu peu recherché sur une partie du texte.

A+
 
Dernière édition:

xiter75

XLDnaute Nouveau
Re : modification macro recherche

merci beaucoup je vais de se pas essayer du coups je vais utiliser les 2

car j ai 3 modes de recherche et 1 doit être strict et trouver le numero exact

mais les autres non et je vais utiliser ta solution qui m arrange bien


merci beaucoup de ton aide :p
 

WILFRIED

XLDnaute Impliqué
Re : modification macro recherche

Salut xiter75,

Voici en PJ un dévelloppement sur la base du find avec quelque atouts qui devrait intéresser. Une seul macro pour tous faires...

A+
 

Pièces jointes

  • Classeur2.zip
    41.8 KB · Affichages: 111
  • Classeur2.zip
    41.8 KB · Affichages: 113
  • Classeur2.zip
    41.8 KB · Affichages: 137

Discussions similaires

Réponses
2
Affichages
154
Réponses
2
Affichages
271

Statistiques des forums

Discussions
312 329
Messages
2 087 328
Membres
103 517
dernier inscrit
hbenaoun63