Différencier deux plages nommées par un seul caractère

apt

XLDnaute Impliqué
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é :

Code:
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 :

Code:
.Range("F4").AutoFill Destination:=[x & "EntréeS"], Type:=xlFillDefault

Comment résoudre cette difficulté ?

Merci.
 

Dranreb

XLDnaute Barbatruc
Re : Différencier deux plages nommées par un seul caractère

Bonsoir.
Vous ne pouvez mettrez que des littéraux constants entre crochet. Pour des expressions à évaluer il faut Application.Evaluate
Cela dit vous pourriez prendre exactement les mêmes noms mais définis aux niveau des feuilles et non du classeur.
Ils seraient alors tout de même également connus au niveau du classeur à condition de les préfixer du nom de la feuille suivie d'un "!".
Cordialement
 

apt

XLDnaute Impliqué
Re : Différencier deux plages nommées par un seul caractère

Bonsoir Dranreb,

Voila un exemple en pièce jointe.

Dans module1, le code qui fonctionne.

Dans module3, j'ai essayé de réduire le code du module1, mais j'ai des problèmes avec les plages nommées.
 

Pièces jointes

  • PlagesNomméesVBA (1).zip
    20.6 KB · Affichages: 18

Dranreb

XLDnaute Barbatruc
Re : Différencier deux plages nommées par un seul caractère

Pourquoi ne faites vous pas tout simplement:
VB:
.Range(x & "StockDispoS").FormulaR1C1 = "=RC3+RC4-RC5"
Le AutoFill n'est jamais nécessaire dans les macros: on peut directement mettre la même formule à toutes les cellules d'une plage.
Ça marche aussi en notation A1 mais c'est mieux en R1C1: on ne risque pas de se tromper sur le numéro de la 1ère ligne puisqu'on n'a pas besoin de l'indiquer. Et puis je trouve qu'on voit bien, comme ça, que c'est vraiment exactement la même formule à toute les lignes, même si en notation A1 ça se retrouve avec le numéro différent de chaque ligne sans "$" devant.
Cordialement.
 
Dernière édition:

Gareth

XLDnaute Impliqué
Re : Différencier deux plages nommées par un seul caractère

Bonsoir apt,
Bonsoir Dranreb,

Il faut utiliser Range. Pas de guillemets entre crochets.
De plus, il y a un conflit entre ta Destination et le Range F4. bEntreeS est en D4 ...
Code:
.Range("F4").AutoFill Destination:=Range(x & "EntréeS"), Type:=xlFillDefault

Idem pour le reste ...
 

apt

XLDnaute Impliqué
Re : Différencier deux plages nommées par un seul caractère

Bonsoir Dranreb, Gareth,

Ca marche bien la solution avec
Code:
Range(x & "EntréeS")

Mais j'ai un problème dans les colonnes H et I :

En H, le problème de date

En I :

Code:
'-- Derniere colonne
.Range("I4").Formula = "=IF(x & StockMiniS="""","""",IF(x & StockDispoS < x & StockMiniS,""Attention: Stock bas"",""RAS""))"

Dans la barre de formule j'obtiens :

Code:
=SI(x & StockMiniS="";"";SI(x & StockDispoS < x & StockMiniS;"Attention: Stock bas";"RAS"))

Pour la notation en R1C1, il faut que je travaille dessus pour mieux la maitriser :)
 

Pièces jointes

  • PlagesNomméesVBA (2).xls
    79.5 KB · Affichages: 31
Dernière édition:

Statistiques des forums

Discussions
312 451
Messages
2 088 519
Membres
103 875
dernier inscrit
Farouka