
Envoyé par
Philippe Tulliez
Bonjour,
L'erreur obtenue provient sans doute du fait que tu n'as pas de feuille dont la propriété
CodeName a pour valeur
shtData
Lire éventuellement ce billet
VBA – CodeName d’une feuille Excel
Philippe, j'ai regardé ton lien et j'ai parfaitement compris, merci !
J'ai une suite de questions pour bien comprendre ton code, désolé si cela te parait vraiment trivial mais je souhaite parfaitement saisir la philosophie derrière chaque ligne et non simplement copier et coller en changeant des noms de variables.
SI tu permet je te cite chaque ligne qui m'intrigue:
EDIT: je me suis répondu tout seul en cherchant, il me reste cette question:
1 2 3
| With rngData
.Resize(, 1).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=rngList, Unique:=True
End With |
peux tu m'expliquer s'il te plait pourquoi tu commence par .resize ?
Sinon quand je met à jour le code de l'exemple pour s'adapter à mon fichier cela donne:
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
|
Sub Rectangleàcoinsarrondis1_Cliquer()
' Déclaration + Initialisation des variables
Dim rngList As Range, rngData As Range, rngCriteria As Range, r As Long
Set rngData = shtData.Range("H1").CurrentRegion
With shtParam
Set rngList = .Range("C1"): Set rngCriteria = .Range("F1:F2")
End With
' Etape 1 - Création d'une liste unique basée sur la colonne 1
With rngData
.Resize(, 1).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=rngList, Unique:=True
End With
' Etape 2 - Boucle sur la liste avec placement du critère
' Création nouvelle feuille
' Exportation vers nouvelle feuille
' Déplacement de cette nouvelle feuille vers un nouveau classeur
For r = 1 To rngList.CurrentRegion.Rows.Count - 1
rngCriteria.Cells(2, 1) = rngList.Offset(r) ' Insère le critère
' 2.1 - Création d'une feuille
Sheets.Add before:=Sheets(1): Sheets(1).Name = rngList.Offset(r)
' 2.2 - Exportation vers nlle feuille suivant critère
With rngData
.AdvancedFilter xlFilterCopy, rngCriteria, Sheets(1).Range("A1")
End With
' 2.3 - Déplacement de la feuille cers un nouveau classeur
Sheets(1).Move
'
' Ici code pour sauver classeur, Envoyer par email etc...
'
Next
End Sub |
Mais lors de l'execution j'ai droit à l'erreur: Erreur d'execution 1004, le nom de champ est incorrecte ou manquant dans la zone d'extraction.
l'erreur a lieu ici:
.Resize(, 1).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=rngList, Unique:=True
Je sais que mes questions sont ras les pâquerettes mais je débute totalement en VBA et je t'avoue que la puissance de l'outil me dépasse or j'ai vraiment envie de le maîtriser petit à petit.
Partager