Bug macro

renoncule62 -  
soulsy Messages postés 2939 Statut Membre -
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. soulsy Messages postés 2939 Statut Membre 367
     
    Bonjour,
    Peut-être qu'il faut définir sur quelle feuille la commande doit s'appliquer avec la commande suivante : Worksheets("Sheet1").Activate ?
    0
  2. renonule62
     
    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
  3. renoncule62
     
    Bonsoir,
    Personne SVP ?
    0
    1. soulsy Messages postés 2939 Statut Membre 367
       
      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
  4. renoncule62
     
    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
    1. soulsy Messages postés 2939 Statut Membre 367
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. renoncule62
     
    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
    1. soulsy Messages postés 2939 Statut Membre 367
       
      Oui, c'est assez étrange cette histoire, c'est quoi le message d'erreur ?
      0
  7. renoncule62
     
    Bonjour,
    Pas de message d'erreur, la macro s'arrete et surligne Range("C2").Select ??

    chez toi le fichier enregistre et ferme??
    0
    1. soulsy Messages postés 2939 Statut Membre 367
       
      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
  8. renoncule62
     
    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
    1. soulsy Messages postés 2939 Statut Membre 367
       
      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