Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Utiliser deux plages nommées

18 réponses
Avatar
Apitos
Bonsoir =E0 tous,

Dans un classeur, j'ai d=E9fini deux plages nomm=E9e.

bEntr=E9esS, dans l'onglet "B"

mEntr=E9eS, dans l'onglet "M"

Pour utiliser, l'une ou l'autre plage, j'ai cod=E9 :

'-------------
With ActiveSheet
x =3D .Name
.Range("E4").Formula =3D "=3DSUMPRODUCT((sR=E9f=E9rence=3D$A4)*(sEtat=
=3D""x"")*(sMouvement=3D""Sortie"")*(sQuantit=E9))"
.Range("F4").AutoFill Destination:=3D[x & "Entr=E9eS"], Type:=3DxlFillD=
efault
End With
'--------------

Mais voila, =E7a me d=E9clenche une erreur :

Erreur d'ex=E9cution '1004':

La m=E9thode AutoFill de la classe a =E9chou=E9.

Sur la ligne suivante :

.Range("F4").AutoFill Destination:=3D[x & "Entr=E9eS"], Type:=3DxlFillDefau=
lt

Comment r=E9soudre cette difficult=E9 ?

Merci.

10 réponses

1 2
Avatar
LSteph
Bonjour,

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" a écrit dans le message de
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.
Avatar
Jacky
Bonjour,
Essaie ceci

Remplace .Range("F4").AutoFill Destination:=[x & "EntréeS"], Type:=xlFillDefault
par
Evaluate(x & "EntréeS").Copy [f4]

--
Salutations
JJ


"Apitos" a écrit dans le message de 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.
Avatar
Jacky
Humm !
Sans oublier le point devant [f4]
Evaluate(x & "EntréeS").Copy .[f4]

--
Salutations
JJ


"Jacky" a écrit dans le message de news: k5rjb5$bfs$
Bonjour,
Essaie ceci

Remplace .Range("F4").AutoFill Destination:=[x & "EntréeS"], Type:=xlFillDefault
par
Evaluate(x & "EntréeS").Copy [f4]

--
Salutations
JJ


"Apitos" a écrit dans le message de 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.



Avatar
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 !
Avatar
Jacky
Re...
...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" a écrit dans le message de news:

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 !
Avatar
Jacky
Pour vérifier place ceci dans la macro
MsgBox Range(x & "EntréeS").Address

--
Salutations
JJ


"Jacky" a écrit dans le message de news: k5rvs5$dob$
Re...
...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" a écrit dans le message de news:

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 !

Avatar
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 li gne, ça c'est la question ?

En PJ un exemple complet :

http://cjoint.com/?BJtu5e5wCXN
Avatar
Jacky
re..
...ç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" a écrit dans le message de news:

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
Avatar
Jacky
Ok
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" a écrit dans le message de news:

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
Avatar
Jacky
Re...
Evaluate(x & "EntréeS").Copy .[D4]
est a supprimer, bien évidement
Mais cela tu le sais certainement
--
Salutations
JJ


"Jacky" a écrit dans le message de news: k5sdmj$g8t$
Ok
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" a écrit dans le message de news:

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

1 2