Bug macro

Fermé
renoncule62 - 10 déc. 2011 à 09:29
soulsy Messages postés 2739 Date d'inscription dimanche 1 mai 2011 Statut Membre Dernière intervention 21 juillet 2017 - 11 déc. 2011 à 10:01
Bonjour,
je souhaite coller une plage de cellules dans un autre classeur dans lequel j'aurais ajouté un nouvel onglet.
Certainement mon manque de connaissance mais mon code ci-dessous ne fonctionne pas et s'arréte sur Range("C2").Select et je ne omprend pas pourquoi.
Si je suprime cette instruction, ça fonctionne...



Private Sub CommandButton1_Click()

Range("B2:B7").Select
    Selection.Copy
   
Application.Workbooks.Open "D:\essai.xls"


Dim ajoutonglet As Worksheet
Set ajoutonglet = Sheets.Add(After:=Sheets(Sheets.Count))
ajoutonglet.Name = "newonglet"

Range("C2").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False


ActiveWorkbook.Save
ActiveWorkbook.Close

End Sub


Merci de votre aide et explications

A voir également:

7 réponses

soulsy Messages postés 2739 Date d'inscription dimanche 1 mai 2011 Statut Membre Dernière intervention 21 juillet 2017 366
10 déc. 2011 à 09:39
Bonjour,
Peut-être qu'il faut définir sur quelle feuille la commande doit s'appliquer avec la commande suivante : Worksheets("Sheet1").Activate ?
0
Bonjour,
Merci pour ton intervention soulsy mais j'avais déjà éssayé cela de cette façon:
Range("B2:B7").Select
    Selection.Copy
   
Application.Workbooks.Open "D:\essai.xls"


Dim ajoutonglet As Worksheet
Set ajoutonglet = Sheets.Add(After:=Sheets(Sheets.Count))
ajoutonglet.Name = "newonglet"

Worksheets("newonglet").Activate

Range("C2").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False


ActiveWorkbook.Save
ActiveWorkbook.Close

End Sub




mais la macro s'arrete toujours sur Range("C2").Select, je ne comprend pas ??
0
Bonsoir,
Personne SVP ?
0
soulsy Messages postés 2739 Date d'inscription dimanche 1 mai 2011 Statut Membre Dernière intervention 21 juillet 2017 366
10 déc. 2011 à 18:53
Bonsoir,
En fait je crois que c'est l'ordre des opérations qui ne va pas, si tu essayes de le faire manuellement ça ne marche pas. Excel perd ce qu'il a copié au moment où tu dis de sélectionner la cellule C2.

Je pense qu'il faut le faire dans cette ordre :
Ouvrir ton fichier essai
Activer la cellule C2
Copier les données du 1er classeur (en l'activant peut-être avec Workbooks("...").Activate ?)
Coller les données sur ton classeur essai.xls (sans rien sélectionner avant l'opération de collage et surement en activant le classeur)

Je sais pas si j'ai été clair et peut-être qu'il y a un moyen plus "élégant" de contourner ça.
0
Bonsoir Soulsy,
J'ai essayé ta suggestion comme ci-dessous mais rien n'y fait et la macro s'arrete toujours sur Range("C2").Select Grrr.... je ne comprend vraiment pas pourquoi.

merci pour ton intervention




Private Sub CommandButton1_Click()
   
Application.Workbooks.Open "D:\essai.xls"

Dim ajoutonglet As Worksheet
Set ajoutonglet = Sheets.Add(After:=Sheets(Sheets.Count))
ajoutonglet.Name = "newonglet"

Range("C2").Select


Workbooks("source.xls").Activate

Range("B2:B7").Select
    
Selection.Copy

Workbooks("essai.xls").Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

ActiveWorkbook.Save
ActiveWorkbook.Close

End Sub
0
soulsy Messages postés 2739 Date d'inscription dimanche 1 mai 2011 Statut Membre Dernière intervention 21 juillet 2017 366
10 déc. 2011 à 19:56
Bonsoir,
Je viens de tester ton dernier code et chez moi ça marche, donc tu dois plus être loin !
Il reste pas un bout de code quelque part ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci à toi Soulsy pour ton implication.
Je ne comprend vraiment pas, j'ai tout reconstruit avec de nouveaux fichiers et le code ci dessus mais ça ne fonctionne toujours pas, le fichier "essai" s'ouvre, l'onglet "newonglet" est bien créé mais la cellule "c2" n'est pas sélectionnée et la macro bloque à ce stade.
Chez toi les valeurs sont collées dans "essai" de c2 à c7 ?? et le classeur "essai"est fermé et sauvegardé ??
0
soulsy Messages postés 2739 Date d'inscription dimanche 1 mai 2011 Statut Membre Dernière intervention 21 juillet 2017 366
10 déc. 2011 à 23:26
Oui, c'est assez étrange cette histoire, c'est quoi le message d'erreur ?
0
Bonjour,
Pas de message d'erreur, la macro s'arrete et surligne Range("C2").Select ??

chez toi le fichier enregistre et ferme??
0
soulsy Messages postés 2739 Date d'inscription dimanche 1 mai 2011 Statut Membre Dernière intervention 21 juillet 2017 366
11 déc. 2011 à 09:25
Oui, tout est fait sans erreur.
Je sais pas si ça change quelque chose, mais pour simplifier le test j'ai pas associé à un bouton la macro. Je l'ai directement insérer dans un module avec un nom quelconque Sub test() et j'exécute la macro comme ça.
0
Merci Sulsy, effectivement, en passant par un module depuis un bouton formulaire, ça marche!!

reste à expliquer le phénoméne par ceux qui voudront bien s'arréter ici

Merci pour tout, c'est sympa, et bonne continuation...
0
soulsy Messages postés 2739 Date d'inscription dimanche 1 mai 2011 Statut Membre Dernière intervention 21 juillet 2017 366
11 déc. 2011 à 10:01
Ok, là j'avoue que ça dépasse mes quelques compétences,
Tu dois pouvoir garder ta fonction sur le bouton mais dedans tu appelles juste l'exécution de la fonction test() (pour reprendre la dénomination de tout à l'heure).
Bonne journée.
0