Bug macro

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

7 réponses

  1. Bonjour,
    Peut-être qu'il faut définir sur quelle feuille la commande doit s'appliquer avec la commande suivante : Worksheets("Sheet1").Activate ?
    1. 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 ??
      1. Bonsoir,
        Personne SVP ?
        1. 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.
      2. 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
        
        1. 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 ?
      3. 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é ??
        1. Oui, c'est assez étrange cette histoire, c'est quoi le message d'erreur ?
      4. Bonjour,
        Pas de message d'erreur, la macro s'arrete et surligne Range("C2").Select ??

        chez toi le fichier enregistre et ferme??
        1. 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.
      5. 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...
        1. 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.