Méthode find sur deux tableaux puis calcul avec itération
bonjour le forum
bon je sais que la méthode .find est souvent demandée sur le site et qu'il y a des tutos mais je pense que ma demande est particulière c'est pourquoi je me permets de créer ce post
voilà le résumé de mon besoin
j'ai deux fichiers, à l'aide d'une macro j'importe un fichier dans l'autre avec une création d'onglet (comptage)
une fois cela terminé je dois chercher dans le fichier importé une valeur issu de la colonne A puis rechercher celle ci dans la colonne A de l'onglet (stock)
dès que la valeur est trouvée je souhaite soustraire à la cellule situé à deux colonnes (offset...) la valeur issue de la 3ème colonne de l'onglet comptage
et ainsi de suite
et en tout dernier il me faudrait la somme des valeurs trouvées dans l'onglet comptage pour la soustraire à la dernière ligne de mon tableau stock
voici le début de mon code, excuser mon amateurisme :aie:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
Sub test()
'RECUPERATION DE MON CLASSEUR COMPTAGE
ceclasseur = ActiveWorkbook.Name
'Récupération fichier
Filt = "Excel Files (*.xls; *.xlsx; *.xlsm),*.xls; *.xlsx; *.xlsm"
Title = "Selectionnez un Fichier Excel a Importer : "
choix = Application.GetOpenFilename(FileFilter:=Filt, Title:=Title)
If choix = False Then
MsgBox "Aucun fichier choisi"
Exit Sub
End If
Workbooks.Open Filename:=choix
nom = Dir(choix)
Workbooks(nom).Activate
Cells.Copy
Workbooks(ceclasseur).Activate
ActiveWorkbook.Worksheets.Add
ActiveSheet.Name = "comptage propublic"
Range("A1").PasteSpecial (xlPasteValues)
Application.DisplayAlerts = False
Workbooks(nom).Close
Application.DisplayAlerts = True
'DEBUT DE MON CODE POUR COMPARAISON
With Worksheets("STOCK").Range("B2:E500")
Set c = .Find("FDC01", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
With Worksheets("comptage propublic").Range("A1:D500")
Set d = .Find(c, LookIn:=xlValues)
If Not d Is Nothing Then
dAddress = d.Address
Do
Set d = .FindNext(d)
Loop While Not d Is Nothing And d.Address <> dAddress
End If
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
End Sub |
merci pour votre aide ou piste
david