pierrot63270
XLDnaute Nouveau
Bonjour à tous,
cela fait maintenant plusieurs jours que j'essaie en vain de trouver la (les) bonne(s) formule(s) pour remplir la partie non vide du tableau ci-joint. C'est une base de données que j'alimente tous les 3 mois environ.
J'y importe depuis un autre fichier excel (fermé) des données via du VBA. En gros si j'entre le numéro INSEE d'une commune (colonne AD) et que je lance le code, il me remplit les 5 cellules qui suivent (AE=>AI).
Jusque-là, j'y ai réussi mais non sans mal.
Après des recherches sur ce forum et ailleurs, je n'arrive pas à trouver le code qui me satisferait.
D'une part, j'aimerai que le code ne s'applique que sur les cellules vides une fois le code INSEE entré
D'autre part, dans les cellules sous le titre Massif/Hors Massif, je récupère M ou "vide". je voudrais arriver à ce que la valeur soit remplacée par Massif si c'est M le résultat et Hors Massif si c'est "vide".
Si l'un d'entre vous pouvait m'aiguiller, cela m'aiderait grandement.
Merci d'avance
cela fait maintenant plusieurs jours que j'essaie en vain de trouver la (les) bonne(s) formule(s) pour remplir la partie non vide du tableau ci-joint. C'est une base de données que j'alimente tous les 3 mois environ.
J'y importe depuis un autre fichier excel (fermé) des données via du VBA. En gros si j'entre le numéro INSEE d'une commune (colonne AD) et que je lance le code, il me remplit les 5 cellules qui suivent (AE=>AI).
Jusque-là, j'y ai réussi mais non sans mal.
Code:
Sub Recherche()
Dim Fichier As Variant
Dim WbkA As String ' Nom de ce fichier
Dim WbkB As String ' Nom du fichier ouvert
Dim NomCommune As String
Dim NomDpt As String
Dim NumDpt As String
Dim NomReg As String
Dim Massif As String
WbkA = ThisWorkbook.Name
Fichier = Application.GetOpenFilename("Commune (*.xlsx),*.xlsx")
If Fichier = False Then Exit Sub ' pas de fichier on quitte
'
'Il y a un fichier donc on traite
'
Application.ScreenUpdating = False ' Masque le rafraîchissement écran
Workbooks.Open Filename:=Fichier ' Ouverture du fichier
WbkB = ActiveWorkbook.Name
' Récupère le nom du fichier
'
' Définition de la zone de recherche dans le fichier Commune
'
NomCommune = Range("A2:Y" & Range("B" & Rows.Count).End(xlUp).Row).Address(ReferenceStyle:=xlR1C1, _
RowAbsolute:=True, _
ColumnAbsolute:=True)
With Range("AE6:AE" & Range("AD" & Rows.Count).End(xlUp).Row)
'
' C[-3] adresse relative à la colonne de la formule (D) donc D - 3 = A
'
.Formula = "=VLOOKUP(RC[-1],'[" & WbkB & "]Commune'!" & _
NomCommune & ",2,FALSE)"
.Value = .Value
NomDpt = Range("A2:Y" & Range("I" & Rows.Count).End(xlUp).Row).Address(ReferenceStyle:=xlR1C1, _
RowAbsolute:=True, _
ColumnAbsolute:=True)
With Range("AF6:AF" & Range("AD" & Rows.Count).End(xlUp).Row)
.Formula = "=VLOOKUP(RC[-2],'[" & WbkB & "]Commune'!" & _
NomDpt & ",9,FALSE)"
.Value = .Value ' Pour remplacer la formule par la valeur
NumDpt = Range("A2:Y" & Range("H" & Rows.Count).End(xlUp).Row).Address(ReferenceStyle:=xlR1C1, _
RowAbsolute:=True, _
ColumnAbsolute:=True)
With Range("AG6:AG" & Range("AD" & Rows.Count).End(xlUp).Row)
.Formula = "=VLOOKUP(RC[-3],'[" & WbkB & "]Commune'!" & _
NumDpt & ",8,FALSE)"
.Value = .Value
NomReg = Range("A2:Y" & Range("K" & Rows.Count).End(xlUp).Row).Address(ReferenceStyle:=xlR1C1, _
RowAbsolute:=True, _
ColumnAbsolute:=True)
With Range("AH6:AH" & Range("AD" & Rows.Count).End(xlUp).Row)
.Formula = "=VLOOKUP(RC[-4],'[" & WbkB & "]Commune'!" & _
NomReg & ",11,FALSE)"
.Value = .Value
Massif = Range("A2:Y" & Range("Y" & Rows.Count).End(xlUp).Row).Address(ReferenceStyle:=xlR1C1, _
RowAbsolute:=True, _
ColumnAbsolute:=True)
Workbooks(WbkB).Close savechanges:=False
With Range("AI6:AI" & Range("AD" & Rows.Count).End(xlUp).Row)
.Formula = "=VLOOKUP(RC[-5],'[" & WbkB & "]Commune'!" & _
NomReg & ",25,FALSE)"
.Value = .Value
End With
End With
End With
End With
End With
End Sub
Après des recherches sur ce forum et ailleurs, je n'arrive pas à trouver le code qui me satisferait.
D'une part, j'aimerai que le code ne s'applique que sur les cellules vides une fois le code INSEE entré
D'autre part, dans les cellules sous le titre Massif/Hors Massif, je récupère M ou "vide". je voudrais arriver à ce que la valeur soit remplacée par Massif si c'est M le résultat et Hors Massif si c'est "vide".
Si l'un d'entre vous pouvait m'aiguiller, cela m'aiderait grandement.
Merci d'avance