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.
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 :
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,
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
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
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,