Plage nommée ERREUR 1004

PAD

XLDnaute Occasionnel
Bonjour à tous, le forum,

J’ai sur le code qui suit une erreur que je ne suis pas capable de comprendre, c’est pour cela que je demande votre aide, et des explications sur le pourquoi.
Code:
Private Sub Ajout_Click()

Dim premlign, As Long
Dim colonne1a As String, nomfeuille1 As String
Dim dl1 As Long, colonne1 As Long
Dim page As Range
Dim plage As Range
‘Et sur la ligne dessous une erreur d’exécution ‘1004’ :  La méthode ‘Range de l’objet’_Global à échouté 
For Each page In Range('C21:K61;C77:K132;C148:K203;C219:K274;C290:K345;C361:K400' & Range('C65536').End(xlUp).Row)  ‘Séléction des plages de la feuille de calcul
    Set plage = Range(page.Offset(3, 21).Value)  ‘ Début de la plage
    plage.Name = page           ‘plage nommée page
Next page

colonne1a = 'C'
nomfeuille1 = 'Devis'
premlign = 21 'première ligne
'recherche de la dernière ligne écrite
dl1 = Sheets(nomfeuille1).Range(colonne1a & 'page').End(xlUp).Row + 1

    With Sheets('Devis') 'on ajoute dans devis
        'Code=3 ! Désignation=4 ! U=8 ! Q=8 ! P.U.=10 ! Montant H.T.=11
        If entete = 0 Then          'on affiche le texte de l'ouvrage
            .Cells(dl1, 4) = List1
            dl1 = dl1 + 1
            entete = 1
        End If
    .Cells(dl1, 3 & 'page') = Ca               'Label de USF
    .Cells(dl1, 4 & 'page') = List2            ‘Listbox de USF
    .Cells(dl1, 8 & 'page') = Unit             'Label de USF
    .Cells(dl1, 9 & 'page') = Q                 ‘Textbox de USF 
    .Cells(dl1, 10 & 'page') = Pu               'Label de USF
    .Cells(dl1, 11 & 'page') = CDbl(PHT) 'Label de USF
     dl1 = dl1 + 1

End With
    Ca = ''
    Pu = ''
    Unit = ''
    MoU = ''
    Q = ''
    PHT = ''
 
End Sub

Je vous remercie de vous pencher sur mon problème,

Cordialement,

A+ PAD
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Pad, bonjour le forum

Il y a pluisieurs erreurs dans ton code, la première est le point virgule qui sépare les plages.


For Each page In Range('C21:K61,C77:K132,C148:K203,C219:K274,C290:K345,C361:K400' & Range('C65536').End(xlUp).Row)

En VBA il faut utiliser la virgule.

la seconde est toujours dans la même ligne, la fin :
& Range('C65536').End(xlUp).Row)
correspond à un numéro de ligne donc un entier Integer ou Long. Soit elle n'a rien à faire ici, soit il faut l'écrire de cette façon :

For Each page In Application.Union(Range('C21:K61,C77:K132,C148:K203,C219:K274,C290:K345,C361:K400'), Range('A1:C' & Range('C65536').End(xlUp).Row)).Select
J'ai pris 'A1:C' pour l'exemple, tu adapteras...

Troisième : tu nommes la plage avec une variable (page) que tu as déclarée comme Range
Set plage.Name = page

Quatrième :
dl1 = Sheets(nomfeuille1).Range(colonne1a & 'page').End(xlUp).Row + 1

Il y a, je crois, dans ton code une énorme confusion pour la variable page qui est déclarée comme Range mais qui sert aussi a nommer une plage (String) et a définir le dernière numéro d'une colonne (Integer). Utilise des variables différentes et revoit ton code !!! Je ne peut pas te faire de proposition tellement c'est confus.
 

PAD

XLDnaute Occasionnel
Bonjour le forum,
Bonjour Robert,

Bon la je crois que je vais craquer, j’ai pour temps fouillé dans chaque recoin du forum à la recherche de ce qui serai le mieux pour ce remplissage de cellules, je trouve sur un poste parlant de nommée les plages est mieux que bien d’autres solutions, je tache de bidouiller un bout de code qui ne va pas, grâce à toi Robert je réajuste avec ce bout de code :
Code:
For Each page In 
Application.Union(Range('C21:K61,C77:K132,C148:K203,C219:K274,C290:K345,C361:K400'), Range('C' & Range('C65536').End(xlUp).Row)).Select
Plus cette ligne :
Code:
dl1 = Sheets(nomfeuille1).Range('page').End(xlUp).Row + 1   'colonne1a &
Et j’ai encore une erreur 424 je crois, qu’est ce que j’ai fait à excel pour mériter ça ?
Juste une derrière petite question histoire de me remonter le moral, ce que je veux faire est possible ou pas ? Vouloir remplir des plages de cellules de dimensions différentes et d’éloignement différent.

Mais bon, je me dis aussi ça ne fait pas que depuis le début de l’année que j’essaye d’apprendre ce langage, je ne peux pas avoir « le beurre, le bâton, l’argent et la crémière » du jour au lendemain, quoi que pour la heu !… le bâton je peux le prendre pour me taper sur les doigts tellement j’ai de fautes incohérentes aux dires de notre ami et fidèle Robert, non il n’y a pas que lui de Fidèle sur le forum après avoir parcouru moult postes jusqu’au fabuleux MUSEE, et à tous ces Fidèles incorruptibles exceliens et exceliennes, un grand MERCI pour toute la patience que vous développez à notre égard,
Bon j’arrête là, j’ai plus de kleenex la boite est vide, et je suis tout seul…

Je crois que je vais faire un tour dehors, me changer les idées,

Mais quand même encore un GRAND MERCI à tous,

A+ PAD
 

Discussions similaires

Réponses
2
Affichages
154

Statistiques des forums

Discussions
312 323
Messages
2 087 291
Membres
103 510
dernier inscrit
baloty