.Find vba résultat non souhaité et surtout non compris!

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 !

guil456

XLDnaute Nouveau
Bonjour,
Voici mon pb:
Par une macro j'extraie des données d'un annuaire.
On travaille sur la partie extraite en la mettant à jour. Mon souhait est de "synchroniser l'annuaire base et la partie extraite.
Un seul petit problème car je pense être très proche de la solution.
Voici le bout de code et j'explique mon problème.
Code:
Dim fichier As String
  Dim wb As Workbook
    Dim ws As Workbook
    fichier = Application.GetOpenFilename(, , "Sélectionner la liste de consultation")
 Application.DisplayAlerts = False
 Application.ScreenUpdating = False
 
    If fichier <> "*faux*" Then
         Set ws = ThisWorkbook
         Dim b As Integer
         Set wb = Workbooks.Open(fichier)
         For b = 1 To wb.Worksheets.Count
              If wb.Worksheets(b).Range("A3").Value = "ENTREPRISE" Then
                Dim i, a, c, d, e, f As Integer
                Dim noment As String
                i = 2
               
                ws.Activate
                 Sheets.Add.Move After:=Sheets(Sheets.Count)
                 Sheets(Sheets.Count).Name = "TEMPORAIRE"
                wb.Sheets(b).Range("a3").CurrentRegion.Copy
                ws.Sheets(Sheets.Count).Range("a1").PasteSpecial
                      While ws.Worksheets(Sheets.Count).Range("A" & i).Value <> ""
                      noment = ws.Worksheets(Sheets.Count).Range("a" & i).Value
                      
                      
                        Dim x As Range, h As String, l As Integer
                        For d = 1 To ws.Sheets.Count
                        Dim Fstr As String
                        Fstr = ws.Sheets(d).Name
                        If Len(Fstr) < 3 Then
                        With Sheets(d).Range("B7:B350")
                        Set x = Cells.Find(noment, SearchOrder:=xlByRows)
                        If Not x Is Nothing Then
                            h = x.Worksheet.Name
                            l = x.Row
                            c = x.Column
                            MsgBox (h & " " & l & " row, colonne " & c)
                        End If
                        End With
                        End If
                        Next
                
                
                      i = i + 3
                      Wend
                ws.Sheets(Sheets.Count).Delete
              End If
         Next
    End If
     Application.DisplayAlerts = True
 Application.ScreenUpdating = True
de l'annuaire de base, je lance macro pr ouvrir annuaire extrait.
Je dois rechercher parmi chaque entreprise de la partie extraite si l'adresse num tél etc esty le même dans la base.
Le bout de code réduit posant pb est le suivant :
Code:
 For d = 1 To ws.Sheets.Count
                        Dim Fstr As String
                        Fstr = ws.Sheets(d).Name
                        If Len(Fstr) < 3 Then
                        With Sheets(d).Range("B7:B350")
                        Set x = Cells.Find(noment, SearchOrder:=xlByRows)
                        If Not x Is Nothing Then
                            h = x.Worksheet.Name
                            l = x.Row
                            c = x.Column
                            MsgBox (h & " " & l & " row, colonne " & c)
                        End If
                        End With
                        End If
                        Next
J'ai crée une feuille temporaire dans l'annuaire base en collant les données de la partie extraite pour rechercher dans le même classeur. Seulement le seul résultat que j'obtiens est sur la page collé et non dans l'annuaire en lui même.
Or pourtant j'ai bien "With Sheets(d).Range("B7:B350")" qui devrait limiter la recherche à la sheets "d" et donc éliminer de par le fait ma feuille "TEMPORAIRE" par le len. Pourquoi le msgbox me retourne seulement des résultats avec "TEMPORAIRE etc", à savoir des données de la page dont les données sont recherchés.

Espérant être clair et pouvoir guider d'autres personnes dans ce topic.
Je me sens proche et pourtant si lointain!
Je vous remercie apr avance pour votre aide.

Cordialement,
 
Re : .Find vba résultat non souhaité et surtout non compris!

Bonsoir Guil456

Avec ton WITH
Code:
With Sheets(d).Range("B7:B350")

Tu oublies d'utiliser le séparateur "." devant Cells
Code:
Set x = .Cells.Find(noment, SearchOrder:=xlByRows)

A+
 
Re : .Find vba résultat non souhaité et surtout non compris!

Un très grand merci à toi!
J'étais sur d'être proche mais à ce "point" !!!!
je ne pouvais être plus proche! Juste un ".". La difficulté de la programmation mais ce qui en fait sa passion aussi. Un grand merci encore pour ton regard plus attentif et surement plus connaisseur que le mien.
Excellente soirée .
Ps: c'est l'exemple typique du comble de la programmation : un caractère, aussi petit soit t'il met le souk dans le bazar.
 
- 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

Réponses
4
Affichages
461
Réponses
4
Affichages
177
Réponses
2
Affichages
201
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
2
Affichages
153
Réponses
5
Affichages
182
  • Question Question
Microsoft 365 Excel VBA
Réponses
5
Affichages
426
Retour