Utiliser deux plages nommées
Le
Apitos

Bonsoir à tous,
Dans un classeur, j'ai défini deux plages nommée.
bEntréesS, dans l'onglet "B"
mEntréeS, dans l'onglet "M"
Pour utiliser, l'une ou l'autre plage, j'ai codé :
'-
With ActiveSheet
x = .Name
.Range("E4").Formula = "=SUMPRODUCT((sRéférence=$A4)*(sEtat=
=""x"")*(sMouvement=""Sortie"")*(sQuantité))"
.Range("F4").AutoFill Destination:=[x & "EntréeS"], Type:=xlFillD=
efault
End With
'--
Mais voila, ça me déclenche une erreur :
Erreur d'exécution '1004':
La méthode AutoFill de la classe a échoué.
Sur la ligne suivante :
.Range("F4").AutoFill Destination:=[x & "EntréeS"], Type:=xlFillDefau=
lt
Comment résoudre cette difficulté ?
Merci.
Dans un classeur, j'ai défini deux plages nommée.
bEntréesS, dans l'onglet "B"
mEntréeS, dans l'onglet "M"
Pour utiliser, l'une ou l'autre plage, j'ai codé :
'-
With ActiveSheet
x = .Name
.Range("E4").Formula = "=SUMPRODUCT((sRéférence=$A4)*(sEtat=
=""x"")*(sMouvement=""Sortie"")*(sQuantité))"
.Range("F4").AutoFill Destination:=[x & "EntréeS"], Type:=xlFillD=
efault
End With
'--
Mais voila, ça me déclenche une erreur :
Erreur d'exécution '1004':
La méthode AutoFill de la classe a échoué.
Sur la ligne suivante :
.Range("F4").AutoFill Destination:=[x & "EntréeS"], Type:=xlFillDefau=
lt
Comment résoudre cette difficulté ?
Merci.
A prioiri sans vérifier le reste ceci saute aux yeux:
x=lcase(.Name)
BEntréeS ou bEntréesS ... majuscule minuscule et S ou sS,
mais pour les s l'erreur n'est sans doute que dans la transcription du post
Pour la casse,donc si minuscule dans le nomde plage, attention on a en Maj
celui de la feuille
x=lcase(.Name)
--
lSteph
"Apitos" news:
Bonsoir à tous,
Dans un classeur, j'ai défini deux plages nommée.
bEntréesS, dans l'onglet "B"
mEntréeS, dans l'onglet "M"
Pour utiliser, l'une ou l'autre plage, j'ai codé :
'-------------
With ActiveSheet
x = .Name
.Range("E4").Formula =
"=SUMPRODUCT((sRéférence=$A4)*(sEtat=""x"")*(sMouvement=""Sortie"")*(sQuantité))"
.Range("F4").AutoFill Destination:=[x & "EntréeS"], Type:=xlFillDefault
End With
'--------------
Mais voila, ça me déclenche une erreur :
Erreur d'exécution '1004':
La méthode AutoFill de la classe a échoué.
Sur la ligne suivante :
.Range("F4").AutoFill Destination:=[x & "EntréeS"], Type:=xlFillDefault
Comment résoudre cette difficulté ?
Merci.
Essaie ceci
Remplace .Range("F4").AutoFill Destination:=[x & "EntréeS"], Type:=xlFillDefault
par
Evaluate(x & "EntréeS").Copy [f4]
--
Salutations
JJ
"Apitos"
Bonsoir à tous,
Dans un classeur, j'ai défini deux plages nommée.
bEntréesS, dans l'onglet "B"
mEntréeS, dans l'onglet "M"
Pour utiliser, l'une ou l'autre plage, j'ai codé :
'-------------
With ActiveSheet
x = .Name
.Range("E4").Formula = "=SUMPRODUCT((sRéférence=$A4)*(sEtat=""x"")*(sMouvement=""Sortie"")*(sQuantité))"
.Range("F4").AutoFill Destination:=[x & "EntréeS"], Type:=xlFillDefault
End With
'--------------
Mais voila, ça me déclenche une erreur :
Erreur d'exécution '1004':
La méthode AutoFill de la classe a échoué.
Sur la ligne suivante :
.Range("F4").AutoFill Destination:=[x & "EntréeS"], Type:=xlFillDefault
Comment résoudre cette difficulté ?
Merci.
Sans oublier le point devant [f4]
Evaluate(x & "EntréeS").Copy .[f4]
--
Salutations
JJ
"Jacky"
Oui Stéphane, il faut rendre en minuscule les lettres "B" et "M".
Pour Jacky, si par exemple la plage [bEntréesS] est égale à D4:D6, la ligne :
Evaluate(x & "EntréeS").Copy .[D4]
Ne copie la formule en [D4] que pour D4:D5 et laisse la dernière cellule de la plage nommée, à savoir [D6] vide !
Bien qu'un range serait suffisant
Range(x & "EntréeS").Copy .[D4]
Je n'éprouve aucune difficulté pour afficher la plage complète
Ceci, (x & "EntréeS) étant le nom de la plage, je ne vois pas comment la dernière cellule serait tronquée.
A voir.....
--
Salutations
JJ
"Apitos"
Bonsoir LSteph, Jacky,
Oui Stéphane, il faut rendre en minuscule les lettres "B" et "M".
Pour Jacky, si par exemple la plage [bEntréesS] est égale à D4:D6, la ligne :
Evaluate(x & "EntréeS").Copy .[D4]
Ne copie la formule en [D4] que pour D4:D5 et laisse la dernière cellule de la plage nommée, à savoir [D6]
vide !
MsgBox Range(x & "EntréeS").Address
--
Salutations
JJ
"Jacky"
Les plages nommées vont bien de la ligne 4 jusqu'à la ligne 6.
Mais pourquoi les formules ne sont pas copiées jusqu'à la dernière li gne, ça c'est la question ?
En PJ un exemple complet :
http://cjoint.com/?BJtu5e5wCXN
...ça c'est la question ?
Il y a certainement quelque chose qui m'échappe
?????
"-------------
With Sheets("M")
sDerLig = .Range("A" & Rows.Count).End(xlUp).Row
.Range("D4:D" & sDerLig).Name = "mEntréeS"
'---------------
La plage nommée fait référence à "M!$D$4:$D$6"
La plage "d4:d6" de la feuille "M" est vide
La copie doit copier une plage et la coller au même endroit ?????
?????
--
Salutations
JJ
"Apitos"
Re,
Les plages nommées vont bien de la ligne 4 jusqu'à la ligne 6.
Mais pourquoi les formules ne sont pas copiées jusqu'à la dernière ligne, ça c'est la question ?
En PJ un exemple complet :
http://cjoint.com/?BJtu5e5wCXN
Oublie le message précédant
J'ai étudié ton code d'un peu plus près
Remplace ceci
.Range("D4").Formula = "=SUMPRODUCT((sRéférence=$A4)*(sEtat=""" & Nom &
""")*(sMouvement=""Entrée"")*(sQuantité))"
Par
.Range(x & "EntréeS").Formula = "=SUMPRODUCT((sRéférence=$A4)*(sEtat=""" & Nom &
""")*(sMouvement=""Entrée"")*(sQuantité))"
Idem pour les autres...en dessous
--
Salutations
JJ
"Apitos"
Re,
Les plages nommées vont bien de la ligne 4 jusqu'à la ligne 6.
Mais pourquoi les formules ne sont pas copiées jusqu'à la dernière ligne, ça c'est la question ?
En PJ un exemple complet :
http://cjoint.com/?BJtu5e5wCXN
Evaluate(x & "EntréeS").Copy .[D4]
est a supprimer, bien évidement
Mais cela tu le sais certainement
--
Salutations
JJ
"Jacky"