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

Macro au vin blanc

17 réponses
Avatar
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.......

10 réponses

1 2
Avatar
Michel MTO
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" a écrit dans le message de
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.......
Avatar
Pointcom
"Michel MTO" écrit:

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.
Avatar
LSteph
Bonjour,

Dim tes variables ligne as long

c'est plus integer mais long 65536
--
LSteph
Avatar
LSteph
.. 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 wrote:
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.......
Avatar
Pointcom
LSteph écrit:

.. 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.
Avatar
LSteph
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 wrote:
LSteph écrit:

>.. 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.
Avatar
Pointcom
Pointcom écrit:


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.
Avatar
Pointcom
LSteph écrit:

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.
Avatar
Daniel.C
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.......
Avatar
Daniel.C
Salut LSteph.
Pas moi, erreur 438 (XL2010).
Cordialement.
Daniel

LSteph écrit:

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.
1 2