PAPA WALKER
XLDnaute Junior
Bonjour à tous,
J'ai un fichier dan lequel j'ai créé 2 combo box
La première lance une macro qui va extraire la liste des communes liées au département sélectionné dans cette combo box
La seconde lance une deuxième macro qui copie des formules dans quelques cellules et ensuite en fige le résultat.
Je ne comprends pas pourquoi, quand je lance la première macro depuis la combobox1, la macro N° 2 qui ne devrait se lancer qu'avec la combobox2, se lance elle aussi à la suite?
Private Sub COMBODEPART_Change()
Application.Run "COMBODEPART"
End Sub
Private Sub COMBOCOMMUNES_Change()
Application.Run "REFRESH"
End Sub
-----------------------------------------------------------------
Sub COMBODEPART()
'Macro mettant à jour la liste des communes en regard du numéro de département
'On fige les feuilles et on supprime les alertes afin d'accélérer le traitement.
Application.DisplayAlerts = False
Application.ScreenUpdating = False
'Définition des variables
Dim CHOIXDEPARTEMENT As Variant
Dim DLIGNEVILLE As Long
CHOIXDEPARTEMENT = Sheets("MENU").[B5:B5].Value
'Nettoyage de la liste des communes
Sheets("EXTRACT").Select
Range("COMMUNES").Select
Selection.ClearContents
Range("INSEE").Select
Selection.ClearContents
Sheets("EXTRACT").[A2].Value = CHOIXDEPARTEMENT
'Filtre de la liste des communes à partir du département sélectionné dans la comboBox en B5
Sheets("BASE").[A1:E500000].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets("EXTRACT").[A1:A2], CopyToRange:=Sheets("EXTRACT").[B1:C1], Unique:=True
'récupération de la variable signifiant le numéro de ligne correspondant à la dernière commune de la liste
DLIGNEVILLE = Range("B10000").End(xlUp).Row
'Nommage du champ COMMUNES selon le nombre de lignes présentes dans la colonne B
Set LISTEVILLES = Range("B2:B" & DLIGNEVILLE + 1)
ActiveWorkbook.Names.Add Name:="COMMUNES", RefersTo:=LISTEVILLES
'Nommage du champ INSEE selon le nombre de lignes présentes dans la colonne C
Set LISTEINSEE = Range("C2:C" & DLIGNEVILLE + 1)
ActiveWorkbook.Names.Add Name:="INSEE", RefersTo:=LISTEINSEE
Range("A1").Select
Sheets("MENU").Select
Range("B7:B14").ClearContents
Range("A1").Select
____________________________________________
Sub REFRESH()
'Retour à la Feuuille MENU et on réécrit les formules de recherche des correspondants
'On fige les résultats
'On fige les feuilles et on supprime les alertes afin d'accélérer le traitement.
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Sheets("MENU").Select
Range("B7").FormulaR1C1 = _
"=INDEX(BASE!R1C1:R37619C11,MATCH(R[1]C,BASE!R1C5:R37619C5,0),10)"
Range("B8").FormulaR1C1 = "=VLOOKUP(R[-2]C,EXTRACT!R1C2:R1500C3,2,FALSE)"
Range("B9").FormulaR1C1 = _
"=INDEX(BASE!R1C1:R37619C11,MATCH(R[-1]C,BASE!R1C5:R37619C5,0),6)"
Range("B10").FormulaR1C1 = _
"=INDEX(BASE!R1C1:R37619C11,MATCH(R[-2]C,BASE!R1C5:R37619C5,0),7)"
Range("B11").FormulaR1C1 = _
"=INDEX(BASE!R1C1:R37619C11,MATCH(R[-3]C,BASE!R1C5:R37619C5,0),8)"
Range("B12").FormulaR1C1 = "=VLOOKUP(R13C2,LISTES!R1C3:R54C5,3,FALSE)"
Range("B13").FormulaR1C1 = _
"=INDEX(BASE!R1C1:R37619C11,MATCH(R[-5]C,BASE!R1C5:R37619C5,0),11)"
Range("B14").FormulaR1C1 = "=VLOOKUP(R13C2,LISTES!R1C3:R54C5,2,FALSE)"
Range("B7:B14").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B6").Select
Application.CutCopyMode = False
End Sub
Le code plante à hauteur de laligne selection.copy (6 lignes plus haut après Range("B7:B14").Select)
Mais normalement le code de la macro REFRESH ne devrait pas être du tout exécuté?
Je m'y perds...
J'ai supprimé une combo et je l'ai recréée et c'est pareil?
J'ai un fichier dan lequel j'ai créé 2 combo box
La première lance une macro qui va extraire la liste des communes liées au département sélectionné dans cette combo box
La seconde lance une deuxième macro qui copie des formules dans quelques cellules et ensuite en fige le résultat.
Je ne comprends pas pourquoi, quand je lance la première macro depuis la combobox1, la macro N° 2 qui ne devrait se lancer qu'avec la combobox2, se lance elle aussi à la suite?
Private Sub COMBODEPART_Change()
Application.Run "COMBODEPART"
End Sub
Private Sub COMBOCOMMUNES_Change()
Application.Run "REFRESH"
End Sub
-----------------------------------------------------------------
Sub COMBODEPART()
'Macro mettant à jour la liste des communes en regard du numéro de département
'On fige les feuilles et on supprime les alertes afin d'accélérer le traitement.
Application.DisplayAlerts = False
Application.ScreenUpdating = False
'Définition des variables
Dim CHOIXDEPARTEMENT As Variant
Dim DLIGNEVILLE As Long
CHOIXDEPARTEMENT = Sheets("MENU").[B5:B5].Value
'Nettoyage de la liste des communes
Sheets("EXTRACT").Select
Range("COMMUNES").Select
Selection.ClearContents
Range("INSEE").Select
Selection.ClearContents
Sheets("EXTRACT").[A2].Value = CHOIXDEPARTEMENT
'Filtre de la liste des communes à partir du département sélectionné dans la comboBox en B5
Sheets("BASE").[A1:E500000].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets("EXTRACT").[A1:A2], CopyToRange:=Sheets("EXTRACT").[B1:C1], Unique:=True
'récupération de la variable signifiant le numéro de ligne correspondant à la dernière commune de la liste
DLIGNEVILLE = Range("B10000").End(xlUp).Row
'Nommage du champ COMMUNES selon le nombre de lignes présentes dans la colonne B
Set LISTEVILLES = Range("B2:B" & DLIGNEVILLE + 1)
ActiveWorkbook.Names.Add Name:="COMMUNES", RefersTo:=LISTEVILLES
'Nommage du champ INSEE selon le nombre de lignes présentes dans la colonne C
Set LISTEINSEE = Range("C2:C" & DLIGNEVILLE + 1)
ActiveWorkbook.Names.Add Name:="INSEE", RefersTo:=LISTEINSEE
Range("A1").Select
Sheets("MENU").Select
Range("B7:B14").ClearContents
Range("A1").Select
____________________________________________
Sub REFRESH()
'Retour à la Feuuille MENU et on réécrit les formules de recherche des correspondants
'On fige les résultats
'On fige les feuilles et on supprime les alertes afin d'accélérer le traitement.
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Sheets("MENU").Select
Range("B7").FormulaR1C1 = _
"=INDEX(BASE!R1C1:R37619C11,MATCH(R[1]C,BASE!R1C5:R37619C5,0),10)"
Range("B8").FormulaR1C1 = "=VLOOKUP(R[-2]C,EXTRACT!R1C2:R1500C3,2,FALSE)"
Range("B9").FormulaR1C1 = _
"=INDEX(BASE!R1C1:R37619C11,MATCH(R[-1]C,BASE!R1C5:R37619C5,0),6)"
Range("B10").FormulaR1C1 = _
"=INDEX(BASE!R1C1:R37619C11,MATCH(R[-2]C,BASE!R1C5:R37619C5,0),7)"
Range("B11").FormulaR1C1 = _
"=INDEX(BASE!R1C1:R37619C11,MATCH(R[-3]C,BASE!R1C5:R37619C5,0),8)"
Range("B12").FormulaR1C1 = "=VLOOKUP(R13C2,LISTES!R1C3:R54C5,3,FALSE)"
Range("B13").FormulaR1C1 = _
"=INDEX(BASE!R1C1:R37619C11,MATCH(R[-5]C,BASE!R1C5:R37619C5,0),11)"
Range("B14").FormulaR1C1 = "=VLOOKUP(R13C2,LISTES!R1C3:R54C5,2,FALSE)"
Range("B7:B14").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B6").Select
Application.CutCopyMode = False
End Sub
Le code plante à hauteur de laligne selection.copy (6 lignes plus haut après Range("B7:B14").Select)
Mais normalement le code de la macro REFRESH ne devrait pas être du tout exécuté?
Je m'y perds...
J'ai supprimé une combo et je l'ai recréée et c'est pareil?
Dernière édition: