[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
").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
").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
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
").SelectSelection.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
").SelectSelection.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
Autres pages sur : vba methode pastespecial classe range echoue
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
merci d'avance
maintenant j'ai mon probleme 1 fois sur 2 si quelqu'un a une idée
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:="secu"
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:="secu"
'rendre vierge le formulaire
Sheets("formulaire").Select
Range("B2:B4").Select
Selection.ClearContents
Range("B2").Select
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.
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.
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.
' 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" ).Activate
With Sheets("Base de donnée")
.Unprotect Password:="secu"
.Columns("A:D" ).Select
' Test pour déterminer la ligne ou coller les infos dans tableau
If .Range("A2" ) = "" Then
.Range("A2" ).Select
Else
.Range("A1" ).Select
ligne_active_base = Selection.End(xlDown).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
'verrouillage + protection base de donner
.Columns("A:D" ).Select
.Protect Password:="secu"
End with
'rendre vierge le formulaire
Sheets("formulaire" ).Activate
Range("B2:B4" ).Select
Selection.ClearContents
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
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 conseilleon 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
