Se connecter avec
S'enregistrer | Connectez-vous

[vba] la methode pasteSpecial de la classe Range a echoue

Dernière réponse : dans Programmation

bonjour,
depuis quelque jours j'essai de faire quelque petit programme pour apprendre

la je butte sur une erreur d'execution '1004'

voici mon programme pouriez vous m'aider merci

[vba]

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
Selection.Locked = False
'Test pour déterminer la ligne ou coller les infos dans tableau
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
Selection.Locked = True
ActiveSheet.Protect Password:="mon_code"
'rendre vierge le formulaire
Sheets("formulaire").Select
Range("B2:B4").Select
Selection.ClearContents
Range("B2").Select

End Sub




juste si vous pouvez eviter le langage trop technique merci a tous

Lassé par la pub ? Créez un compte

j'ai suprimé des code qui au final ne servait pas

maintenant j'ai mon probleme 1 fois sur 2 si quelqu'un a une idée

  1. Sub transpose_dans_tableau()
  2.  
  3. 'modifier par gerald le 17/04/07
  4.  
  5. 'attendre le formulaire et mémoriser les données
  6. Sheets("formulaire").Select
  7. Range("b1:b4").Select
  8. Selection.Copy
  9. 'oter protection feuille + deverouillage cellule
  10. Sheets("Base de donnée").Select
  11. ActiveSheet.Unprotect Password:="secu"
  12. Columns("A:D").Select
  13. 'Test pour déterminer la ligne ou coller les infos dans tableau
  14. Sheets("Base de donnée").Select
  15. valeurA2 = Range("A2").Value
  16. If valeurA2 = "" Then
  17. Range("A2").Select
  18. Else
  19. Range("A1").Select
  20. Selection.End(xlDown).Select
  21. ligne_active_base = ActiveCell.Row
  22. Range("A" & ligne_active_base + 1).Select
  23. End If
  24. 'Memorise le N° de la ligne ou coller les données
  25. ligne_active_base = ActiveCell.Row
  26. 'collage avec transposition
  27. Range("A" & ligne_active_base).Select
  28. Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  29. :=False, Transpose:=True
  30. 'verroillage + protection base de donner
  31. Sheets("Base de donnée").Select
  32. Columns("A:D").Select
  33. ActiveSheet.Protect Password:="secu"
  34. 'rendre vierge le formulaire
  35. Sheets("formulaire").Select
  36. Range("B2:B4").Select
  37. Selection.ClearContents
  38. Range("B2").Select
  39.  
  40. End Sub


merci d'avance

Salut,

Alors déjà il y a qq règle de mise en forme à connaitre afin de faciliter la lecture de ton programme. Genre mettre des tabulations dans tes boucles ou condition (if then end if)
Et il y a quelques lignes inutiles ou que tu peux condenser. Par exemple les sheets("").select il n'y a pas besoin de les mettre plusieur fois mais seulement qd tu veux changer d'onglet.

  1. ' attendre le formulaire et mémoriser les données
  2. Sheets("formulaire" ).Select
  3. Range("b1:b4" ).Select
  4. Selection.Copy
  5. ' oter protection feuille + deverouillage cellule
  6. Sheets("Base de donnée" ).Activate
  7. With Sheets("Base de donnée")
  8. .Unprotect Password:="secu"
  9. .Columns("A:D" ).Select
  10. ' Test pour déterminer la ligne ou coller les infos dans tableau
  11. If .Range("A2" ) = "" Then
  12. .Range("A2" ).Select
  13. Else
  14. .Range("A1" ).Select
  15. ligne_active_base = Selection.End(xlDown).row
  16. .Range("A" & ligne_active_base + 1).Select
  17. End If
  18. ' Memorise le N° de la ligne ou coller les données
  19. ligne_active_base = ActiveCell.Row
  20. 'collage avec transposition
  21. .Range("A" & ligne_active_base).Select
  22. Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  23. :=False, Transpose:=True
  24. 'verrouillage + protection base de donner
  25. .Columns("A:D" ).Select
  26. .Protect Password:="secu"
  27. End with
  28. 'rendre vierge le formulaire
  29. Sheets("formulaire" ).Activate
  30. Range("B2:B4" ).Select
  31. Selection.ClearContents
  32. Range("B2" ).Select


A mon avis ton erreur provient de ces Select, pour un changement d'onglet préfère la méthode Activate plutot que le select tu auras moins de problème avec les range.

merci bien pour tous vos conseille

on ma donner une reponse sur un autre forum qui a resolus mon probleme

pour ceux qui aurait le meme pb que moi
l'erreur etait que je copiai la cellule B1:B4 avant d'oter la protection de la feuil base_de_donnée (ce qui me fesait perdre la selection a copier)

merci pour votre attention


gerald

djedje13 a dit :
merci bien pour tous vos conseille

on ma donner une reponse sur un autre forum qui a resolus mon probleme

pour ceux qui aurait le meme pb que moi
l'erreur etait que je copiai la cellule B1:B4 avant d'oter la protection de la feuil base_de_donnée (ce qui me fesait perdre la selection a copier)

merci pour votre attention


gerald


salut c alain
j'ai le meme probleme et je n'arrive pas a debloquer cette erreur peux tu me doner la solution et me copier ta macro
merci par avance
Lassé par la pub ? Créez un compte