Problème de copie colle

Sharox - Modifié par Sharox le 23/10/2013 à 08:18
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 23 oct. 2013 à 11:02
Bonjour tout le monde

J'ai un petit problème dans mon code VBA avec Excel
Je suis Novice donc si vous pouvez me parler en Français ^^

'1er instruction
Sheets("Chiffrage").Activate
Range("A1:L44").Select
Selection.Copy
'2eme instruction
Sheets.Add.Name = "imprime"
ActiveSheet.Paste
Sheets("imprime").Activate
'3eme instruction
Application.CommandBars("Task Pane").Visible = True
Application.CutCopyMode = False
Application.CommandBars("Task Pane").Visible = False
'4eme instruction
Columns("A:A").Select
Selection.ColumnWidth = 6.29
Columns("B:B").Select
Selection.ColumnWidth = 15
Columns("C:C").Select
Selection.ColumnWidth = 6.57
Columns("D:D").Select
Selection.ColumnWidth = 15.43
Columns("E:E").Select
Selection.ColumnWidth = 19.14

Range("F:F,G:G").Select
Selection.EntireColumn.Hidden = True

Columns("H:H").Select
Selection.ColumnWidth = 23.14
Columns("I:I").Select
Selection.ColumnWidth = 24.86

Range("J:J,K:K").Select
Selection.EntireColumn.Hidden = True

Columns("L:L").Select
Selection.ColumnWidth = 29.14
'5eme instruction
Range("B18:B44").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="<>0", Operator:=xlAnd


et ca ne marche pas

-Ce que fait normalement ce code, il copie une plage
-il crée une autre feuille, colle cette plage
-vide le presse-papier
-change la tailles des colonnes et en masques certaines
-et fini par filtrer une colonne (différent de 0)

2 réponses

La lecture du code ne vous ais pas simple :(
enfin sur mon écran ca met tout sur la même ligne
si vous voulez que je l'écrive d'une autre méthode dite le

d'ailleurs le message d'erreur suivant s'affiche durant la lecture du code a la ligne : Columns ("A:A").Select

Erreur d'exécution '1004':
Erreur définie par l'application ou par l'objet
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 oct. 2013 à 08:30
Bonjour,
Pour ce qui est de la présentation de ton code :
Lis ceci :
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Puis réédite ton message, s'il te plait.
0
heu j'ai un problème, ca me laisse en ligne le code
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 23/10/2013 à 10:22
C'est probablement parce qu'il était déjà trop tard (l'indentation n'était plus là) ...
Reprends ton code indenté ===>> substitue-le au code non indenté et mets-le entre balises code.

Ah ... c'est peut-être également ton navigateur qui en est responsable, car, avec le mien, je vois bien des lignes distinctes.
0
wai ca dois être mon navigateur
donc je te réécrit le code par contre comme qui dirait, tu es mes yeux ^^

Sub CommandButton2_Click()
'1er instruction
Sheets("Chiffrage").Activate
Range("A1:L44").Select
Selection.Copy
'2eme instruction
Sheets.Add.Name = "imprime"
ActiveSheet.Paste
Sheets("imprime").Activate
'3eme instruction
Application.CommandBars("Task Pane").Visible = True ' Application.CutCopyMode = False ' efface le presse-papier
Application.CommandBars("Task Pane").Visible = False
'4eme instruction
Columns("A:A").Select
Selection.ColumnWidth = 6.29
Columns("B:B").Select
Selection.ColumnWidth = 15
Columns("C:C").Select
Selection.ColumnWidth = 6.57
Columns("D:D").Select
Selection.ColumnWidth = 15.43
Columns("E:E").Select
Selection.ColumnWidth = 19.14
Range("F:F,G:G").Select
Selection.EntireColumn.Hidden = True
Columns("H:H").Select
Selection.ColumnWidth = 23.14
Columns("I:I").Select
Selection.ColumnWidth = 24.86
Range("J:J,K:K").Select
Selection.EntireColumn.Hidden = True
Columns("L:L").Select
Selection.ColumnWidth = 29.14
'5eme instruction
Range("B18:B44").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="<>0", Operator:=xlAnd
End Sub


dit moi si c'est pas bon pour toi
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 23/10/2013 à 10:37
La ligne :
Columns("A:A").Select

est correcte et fonctionne si l'objet actif est bien une feuille

Tu devrais par contre te débarrasser de cette méthode de travail (issue de l'enregistreur de macros ???) qui consiste à activer, sélectionner, copier la sélection, etc ....
VBA fonctionne en se servant directement des objets Excel !
Exemple :
Worksheets("Feuil1").range("A1:C8"). copy destination:= worksheets("Feuil2"):Range("A1")

Copiera directement (sans avoir besoin de l'activer) la plage A1:C8 de la feuille Feuil1 sur la feuille Feuil2, à partir de la cellule A1 de Feuil2.
Recommence sur ces bases (tu t'en porteras mieux. Ton code également)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 23/10/2013 à 10:45
Ce qu'il est important que tu comprennes bien, dès le début :
L'enregistreur de macros traduit, lui, en code chacun des gestes que tu fais (d'où ces select, copy, etc ...)
VBA, lui, obéit à des instructions qui n'ont nul besoin de connaître tes gestes. La différence est énorme.
0
Rejoignez-nous