la methode pasteSpecial de la classe Range a echoue

  • Initiateur de la discussion Initiateur de la discussion djedje13
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

djedje13

XLDnaute Nouveau
bonjours a tous

depuis quelque jours j'essai de faire quelques petit programme pour apprendre
la je butte sur une erreur d'execution '1004'
voici mon programme pouriez vous m'aider merci

Code:
Sub transpose_dans_tableau()

'modifier par gerald le 17/04/07

'attendre le formulaire et mémoriser les données
Sheets("formulaire" ).Select
Range("b1:b4" ).Select
Selection.Copy
'oter protection feuille + deverouillage cellule
    Sheets("Base de donnée" ).Select
    ActiveSheet.Unprotect Password:="mon_code"
    Columns("A:D" ).Select
'Test pour déterminer la ligne ou coller les infos dans tableau
Sheets("Base de donnée" ).Select
valeurA2 = Range("A2" ).Value
If valeurA2 = "" Then
Range("A2" ).Select
Else
Range("A1" ).Select
Selection.End(xlDown).Select
ligne_active_base = ActiveCell.Row
Range("A" & ligne_active_base + 1).Select
End If
'Memorise le N° de la ligne ou coller les données
ligne_active_base = ActiveCell.Row
'collage avec transposition
Range("A" & ligne_active_base).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True
'verroillage + protection base de donner
Sheets("Base de donnée" ).Select
    Columns("A:D" ).Select
    ActiveSheet.Protect Password:="mon_code"
'rendre vierge le formulaire
Sheets("formulaire" ).Select
Range("B2:B4" ).Select
Selection.ClearContents
Range("B2" ).Select

End Sub

quand j'active la macro mon probleme survient 1 fois sur 2 si quelqu'un a une idée de mon probleme

je vous en remerci
 
Re : la methode pasteSpecial de la classe Range a echoue

Salut DjeDje13,

Ton problème vient du fait que tu déprotège ta feuille "base de donnée" après avoir éffectué la copie

Fait le test manuellement :
1) tu copies les cellules B1 à B4
2) Tu déprotège ta feuille "base de donnée"
Maintenant essayes de coller les données copiée !?

Ton code devra être
Code:
'oter protection feuille + deverouillage cellule EN PREMIER
Sheets("Base de donnée").Select
ActiveSheet.Unprotect Password:="code"
Columns("A:D").Select
'attendre le formulaire et mémoriser les données EN SECOND
Sheets("formulaire").Select
Range("b1:b4").Select
Selection.Copy
'Test pour déterminer la ligne ou coller les infos dans tableau
...

Voilà 😉
 
Re : la methode pasteSpecial de la classe Range a echoue

Bonsoir,

J'ai simplifié un peu le code.
On peut eviter plein de Select inutiles 🙂
L'objectif est de copier les données à la suite dans la base ?
Normalement, ca doit faire la meme chose que le tien.
Ce qui plante, c'est le fait de copier avant d'enlever la protection.
(Ca annule la copie)
Il faut donc inverser les lignes.
Sinon, je n'ai pas compris pourquoi tu copies B1:B4 et à la fin tu effaces B2:B4 ?!

voir le fichier joint.

Sub transpose_dans_tableau()
Sheets("Base de donnée").Unprotect Password:="mon_code"
Sheets("formulaire").Range("B1:B4").Copy
Sheets("Base de donnée").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Transpose:=True
Sheets("Base de donnée").Protect Password:="mon_code"
Sheets("formulaire").Range("B2:B4").ClearContents
End Sub

>> Bonsoir Bruno
>> Petite collision 🙂
 

Pièces jointes

Re : la methode pasteSpecial de la classe Range a echoue

Salut Catrice,

Je vois que tu as fait le travail, effectivement on pouvait allègrement simplifié le code 😉

Mais est-ce que DejDje13 va s'y retrouver !?
 
Re : la methode pasteSpecial de la classe Range a echoue

je selection b1:b4

et a la fin j'efface de b2:b4 parce que b1 et automatique now
il y a ma formule dedans qui s'active par rapport a b2

=SI(NBVAL(B2)>0;Datation();"")

pour tous le reste j'essai je vous tien au courant

en tous cas merci boucoup

gerald
 
la methode pasteSpecial de la classe Range a echoue [resolu]

ca fait que 3 4 jours que je me suis mis au vba

il y avait beaucoup action pour rien parce que j'avais compilé plusieur enregistrement de macro

j'ai compris tous se que vous m'avez conseiller

j'ai juste a dire que vous ete impressionant

merci beaucoup a vous deux

gerald😀
 
Re : la methode pasteSpecial de la classe Range a echoue

Re,

Je n'avais pas vu la cellule B1.
Je l'ai modifiée pour éviter de faire appel à une Function.
J'ai mis une condition sur le code pour qu'il ne remplisse la base que s'il y a des données.

Si ce n'est pas clair n'hésite pas à revenir ...
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
28
Affichages
3 K
Réponses
2
Affichages
2 K
Retour