Macro au vin blanc

Le
Pointcom
Bonjour,

Vu que ce forum résiste encore et toujours, je pose ma question

J'ai une macro qui plante et je ne sais pas pourquoi.

Modele.value contient simplement le nom d'une feuille du classeur et
n'est pas en cause.

Private Sub AjoutRef_Click()

Dim LigneDebut, LigneFin As Integer

If Modele.ListIndex = -1 Then Exit Sub

LigneDebut = Sheets(Modele.Value).Range("A65536").End(xlUp).Row


LigneFin=Sheets(Modele.Value).Range("A65536").End(xlUp).Offset(2,0).Row

**********Les deux msg box fonctionne et sont là pour test

MsgBox (Sheets(Modele.Value).Range("A1").Rows(LigneDebut &
":"&LigneFin).EntireRow.Address)
MsgBox (Sheets(Modele.Value).Range("A1").Rows(LigneDebut + 3 &
":" & LigneFin + 3).EntireRow.Address)

Sheets(Modele.Value).Range("A1").Rows(LigneDebut & ":" &
LigneFin).EntireRow.Copy

************** C'est ci dessous que ça me met systématiquement une
***************erreur 438
****** j ai essayé plein de truc mais ça plante

Sheets(Modele.Value).Range("A1").Rows(LigneDebut + 3 & ":" &
LigneFin + 3).EntireRow.Paste

End Sub


Si qqun voit de quoi il en reourne.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michel MTO
Le #22205661
Bonjour,
et pourquoi pas ceci :
Sheets(Modele.Value).Range("A1").offset(0,1).EntireRow.Paste
à voir ?? je ne suis pas sûr !!

Michel MTO

"Pointcom" news:
Bonjour,

Vu que ce forum résiste encore et toujours, je pose ma question

J'ai une macro qui plante et je ne sais pas pourquoi.

Modele.value contient simplement le nom d'une feuille du classeur et
n'est pas en cause.

Private Sub AjoutRef_Click()

Dim LigneDebut, LigneFin As Integer

If Modele.ListIndex = -1 Then Exit Sub

LigneDebut = Sheets(Modele.Value).Range("A65536").End(xlUp).Row


LigneFin=Sheets(Modele.Value).Range("A65536").End(xlUp).Offset(2,0).Row

**********Les deux msg box fonctionne et sont là pour test

MsgBox (Sheets(Modele.Value).Range("A1").Rows(LigneDebut &
":"&LigneFin).EntireRow.Address)
MsgBox (Sheets(Modele.Value).Range("A1").Rows(LigneDebut + 3 &
":" & LigneFin + 3).EntireRow.Address)

Sheets(Modele.Value).Range("A1").Rows(LigneDebut & ":" &
LigneFin).EntireRow.Copy

************** C'est ci dessous que ça me met systématiquement une
***************erreur 438
****** j ai essayé plein de truc mais ça plante

Sheets(Modele.Value).Range("A1").Rows(LigneDebut + 3 & ":" &
LigneFin + 3).EntireRow.Paste

End Sub


Si qqun voit de quoi il en reourne.......
Pointcom
Le #22205731
"Michel MTO"
Sheets(Modele.Value).Range("A1").offset(0,1).EntireRow.Paste



C'était bien essayé mais ça plante aussi.
Ce qui m'énerve, c'est que les msgbox passent très bien mais que le
paste plante systématiment alors que la syntaxe est la même.
LSteph
Le #22205901
Bonjour,

Dim tes variables ligne as long

c'est plus integer mais long 65536
--
LSteph
LSteph
Le #22205951
.. et quand tu utilise Dim.. As il faut le faire pour chaque

exemple:

dim lig1as long, lig2 as long, lig3 as long

car si tu dis:
Dim a,b,c,d as long

seul d est as long les trois premiers restent en Variant.

Pour le rest relire ici dans l'Aide de VBA
"Résumé des types de données"
Byte 1 octet 0 à 255
Boolean 2 octets True ou False
Integer 2 octets -32 768 à 32 767
Long
(entier long) 4 octets -2 147 483 648 à 2 147 483 647
...

--
LSteph





On 3 juin, 07:41, Pointcom
Bonjour,

Vu que ce forum r siste encore et toujours, je pose ma question

J'ai une macro qui plante et je ne sais pas pourquoi.

Modele.value contient simplement le nom d'une feuille du classeur et
n'est pas en cause.

Private Sub AjoutRef_Click()

Dim LigneDebut, LigneFin As Integer

     If Modele.ListIndex = -1 Then Exit Sub

     LigneDebut = Sheets(Modele.Value).Range("A65536").End(xlUp). Row

LigneFin=Sheets(Modele.Value).Range("A65536").End(xlUp).Offset(2,0).Row

**********Les deux msg box fonctionne et sont l pour test

     MsgBox (Sheets(Modele.Value).Range("A1").Rows(LigneDebut &
":"&LigneFin).EntireRow.Address)
     MsgBox (Sheets(Modele.Value).Range("A1").Rows(LigneDebut + 3 &
":" & LigneFin + 3).EntireRow.Address)

     Sheets(Modele.Value).Range("A1").Rows(LigneDebut & ":" &
LigneFin).EntireRow.Copy

************** C'est ci dessous que a me met syst matiquement une
***************erreur 438
****** j ai essay plein de truc mais a plante

     Sheets(Modele.Value).Range("A1").Rows(LigneDebut + 3 & ":" &
LigneFin + 3).EntireRow.Paste

End Sub

Si qqun voit de quoi il en reourne.......
Pointcom
Le #22206171
LSteph
.. et quand tu utilise Dim.. As il faut le faire pour chaque



Certes et merci, mais ce n'est pas la cause de l'erreur.
J'ai essayé avec plein de variantes : l'adresse à copier en dur...
mais je me ramasse à chaque fois sur le paste.
Les lignes sont bien sélectionnées. Manuellement, ça passe
mais par macro ça coince.
LSteph
Le #22206221
Re,
essaye plus simplement Copy destination , sans paste:

'...
Sheets(Modele.Value).Range("A1").Rows(LigneDebut & ":" &
LigneFin).EntireRow.Copy _
Sheets(Modele.Value).Range("A1").Rows(LigneDebut + 3 & ":" & LigneFin
+ 3).EntireRow
'..


'LSteph


On 3 juin, 10:48, Pointcom
LSteph
>.. et quand tu utilise Dim.. As il faut le faire pour chaque

Certes et merci, mais ce n'est pas la cause de l'erreur.
J'ai essayé avec plein de variantes : l'adresse à copier en dur...
mais je me ramasse à chaque fois sur le paste.
Les lignes sont bien sélectionnées. Manuellement, ça passe
mais par macro ça coince.
Pointcom
Le #22206211
Pointcom

J'y suis arrivé tout de même :

J'ai remplacé les deux lignes

Sheets(Modele.Value).Range("A1").Rows(LigneDebut & ":" &
LigneFin).EntireRow.Copy

Sheets(Modele.Value).Range("A1").Rows(LigneDebut + 3 & ":" &
LigneFin + 3).EntireRow.Paste



Par
Sheets(Modele.Value).Range("A1").Rows(LigneDebut & ":" &
LigneFin).EntireRow.Copy Range("A1").Rows(LigneFin + 1)

Et là, par miracle, ça passe.

Pointcom
Faites comme moi : accrochez votre médaille de Saint Billou sur votre
PC. Vous n'aurez plus de plantages que ce soit sous 3.1, 95, 98, NT,
2000, Millénium, XP, Vista et Seven.
Attention, la médaille de Saint Billou ne marche pas sous linux ni
sous les applications GNU.
Pointcom
Le #22206311
LSteph
Re,
essaye plus simplement Copy destination , sans paste:



Avant de lire ton message, j'avais essayé et ça marche.
C'était la bonne solution.

Merci.
Daniel.C
Le #22206301
Bonjour.
Essaie :

Sheets(modele.Value).Rows(LigneDebut + 3 & ":" & LigneFin +
3).Select
ActiveSheet.Paste

Daniel

Bonjour,

Vu que ce forum résiste encore et toujours, je pose ma question

J'ai une macro qui plante et je ne sais pas pourquoi.

Modele.value contient simplement le nom d'une feuille du classeur et
n'est pas en cause.

Private Sub AjoutRef_Click()

Dim LigneDebut, LigneFin As Integer

If Modele.ListIndex = -1 Then Exit Sub

LigneDebut = Sheets(Modele.Value).Range("A65536").End(xlUp).Row


LigneFin=Sheets(Modele.Value).Range("A65536").End(xlUp).Offset(2,0).Row

**********Les deux msg box fonctionne et sont là pour test

MsgBox (Sheets(Modele.Value).Range("A1").Rows(LigneDebut &
":"&LigneFin).EntireRow.Address)
MsgBox (Sheets(Modele.Value).Range("A1").Rows(LigneDebut + 3 &
":" & LigneFin + 3).EntireRow.Address)

Sheets(Modele.Value).Range("A1").Rows(LigneDebut & ":" &
LigneFin).EntireRow.Copy

************** C'est ci dessous que ça me met systématiquement une
***************erreur 438
****** j ai essayé plein de truc mais ça plante

Sheets(Modele.Value).Range("A1").Rows(LigneDebut + 3 & ":" &
LigneFin + 3).EntireRow.Paste

End Sub


Si qqun voit de quoi il en reourne.......
Daniel.C
Le #22206401
Salut LSteph.
Pas moi, erreur 438 (XL2010).
Cordialement.
Daniel

LSteph
Re,
essaye plus simplement Copy destination , sans paste:



Avant de lire ton message, j'avais essayé et ça marche.
C'était la bonne solution.

Merci.
Publicité
Poster une réponse
Anonyme