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 53 54 55 56 57 58 59
| Option Explicit
Enum myCols
myColNom1 = 2 'N° de la colonne pour le Nom dans la feuille 1 (B=2)
myColPrenom1 = 3 'N° de la colonne pour le Prénom dans la feuille 1 (C=3)
mycolrf1 = 52 'N° de la colonne pour le Prénom dans la feuille 1 (AZ=52)
mycolrr1 = 6 'N° de la colonne pour la récupération de l'adresse dans la feuille 1 (F=6)
myStartRow1 = 2 'N° de la ligne de départ pour les calculs (2)
myColNom2 = 1 'N° de la colonne pour le Nom dans la feuille 2 (A=1)
myColPrenom2 = 8 'N° de la colonne pour le Prénom dans la feuille 2 (H=8)
mycolrf2 = 52 'N° de la colonne pour le Prénom dans la feuille 2 (AZ=52)
mycolrr2 = 11 'N° de la colonne contenant les adresses sur la feuille 2 (k=11)
myStartRow2 = 2 'N° de la ligne de départ pour les calculs (2)
End Enum
Sub FindAdresses()
Dim oRF1 As Range 'Plage pour la formule de clé
Dim oRR1 As Range 'Plage pour la formule de récupération des adresses
Dim oRF2 As Range 'Plage pour la formule de clé
Dim oRR2 As Range 'Plage pour les adresses d'origine
Dim lRows As Long
'## 1 ## Création de l'ID dans la feuille Feuil1
'-- Définition du nombre de lignes
lRows = Feuil1.UsedRange.Rows.Count
'-- Définition de la plage pour la réception de la clé sur la feuille Feuil1
With Feuil1
Set oRF1 = .Range(.Cells(myStartRow1, mycolrf1), .Cells(lRows, mycolrf1))
End With
'Ecriture de la formule pour la clé
oRF1.FormulaR1C1 = "=RC" & myColNom1 & "&""-""&RC" & myColPrenom1
'et définition de la plage pour les adresses
Set oRR1 = oRF1.Offset(0, mycolrr1 - mycolrf1)
'## 2 ## Création de l'ID dans la feuille Feuil1
'-- Définition du nombre de lignes
lRows = Feuil2.UsedRange.Rows.Count
'-- Définition de la plage pour la réception de la clé sur la feuille Feuil2
With Feuil2
Set oRF2 = .Range(.Cells(myStartRow2, mycolrf2), .Cells(lRows, mycolrf2))
End With
'Ecriture de la formule pour la clé
oRF2.FormulaR1C1 = "=RC" & myColNom2 & "&""-""&RC" & myColPrenom2
'et définition de la plage pour les adresses
Set oRR2 = oRF2.Offset(0, mycolrr2 - mycolrf2)
'## 3 ## Création de la formule pour la récupération de l'adresse, dans la feuille 1
oRR1.FormulaR1C1 = "=INDEX(" & _
oRR2.Address(True, True, xlR1C1, True) & _
",MATCH(RC[" & mycolrf1 - mycolrr1 & "]," & _
oRF2.Address(True, True, xlR1C1, True) & _
",0))"
'## 4 ## Suppression de la formule au profit de la valeur
oRR1.Copy
oRR1.PasteSpecial xlPasteValues
Application.CutCopyMode = False
'## 5 ## Suppression des formule de clé
oRF1.ClearContents
oRF2.ClearContents
End Sub |
Partager