Excel - macro copier coller

redrum -  
 redrum -
Bonjour,

J'ai un classeur avec deux feuilles. J'ai créé un bouton pour copier une plage de cellule de la première feuille et la coller dans la deuxième feuille.

Le problème est que la macro bloque au moment de sélectionner la plage à copier pour une raison que j'ignore.
Pouvez-vous m'aider ?

Private Sub CommandButton1_Click()
Dim i, RefRow, InitialRow, row As Integer
TotoProduction = Position("PRODUCTION TOTO")
InitialRow = TotoProduction (0)
row = InitialRow + 2
While Sheets("catalogue").Cells(row, 1).Value <> ""
row = row + 1
Wend
Sheets("ratios").Select
Range("L65536").End(xlUp).Select
RefRow = ActiveCell.row + 1
Sheets("catalogue").Select
Range(Cells(InitialRow, 1), Cells(row, 5)).Select -------------> C'est là que ça bloque
Selection.Copy
Sheets("ratios").Select
Cells(RefRow + 1, 12).Select
Sheets("ratios").Paste
Sheets("ratios").Columns("L:L").EntireColumn.AutoFit
Sheets("ratios").Columns("M:M").EntireColumn.AutoFit
End Sub
Configuration: Windows XP Internet Explorer 6.0

15 réponses

  1. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    bonjour,

    c'est normal.

    le problème se situe là!

    Dim i, RefRow, InitialRow, row As Integer
    tu n'as pas le droit d'utiliser row comme variable car c'est un mot réservé pour la fonction row.
    change les noms des variables row devient ligne ...etc.
    Et reteste

    A+
    0
  2. redrum
     
    Bonjour,

    Le problème subsiste:

    Private Sub CommandButton1_Click()
    Dim i, RefLigne, InitialLigne, ligne As Integer
    ProductionCalorifique = Position("PRODUCTION CALORIFIQUE")
    InitialLigne = ProductionCalorifique(0)
    ligne = InitialLigne + 2
    While Sheets("catalogue").Cells(ligne, 1).Value <> ""
    ligne = ligne + 1
    Wend
    Sheets("ratios").Select
    Range("L65536").End(xlUp).Select
    RefLigne = ActiveCell.row + 1
    Sheets("catalogue").Select
    Range(Cells(InitialLigne, 1), Cells(ligne, 5)).Select -----------> Blocage ici (erreur 1004)
    Selection.Copy
    Sheets("ratios").Select
    Cells(RefLigne + 1, 12).Select
    Sheets("ratios").Paste
    Sheets("ratios").Columns("L:L").EntireColumn.AutoFit
    Sheets("ratios").Columns("M:M").EntireColumn.AutoFit
    End Sub
    0
  3. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    J'ai forcé les variables de la ligne
    Range(Cells(InitialLigne, 1), Cells(ligne, 5)).Select
    mon problème à moi c'est que je n'ai pas d'erreur.

    Donc regarde l'état de ta variable avant d'executer cette ligne.

    dans vba tu fais déboggage/ajouter un espion
    tu ajoutes ces deux variables.

    puis tu test ton prog avec F8
    Pour le momment je ne peux pas t'aider davantage.
    tiens moi au courant
    0
  4. redrum
     
    Merci pour ton implication;

    J'ai l'impression qu'une macro d'un bouton situé sur une feuille X ne peut pas faire d'action sur une feuille Y.

    N'est-ce pas là le problème ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    Non!

    je comprends que tu comptes les Ligne sur la feuille "catalogue" ensuite sur la feuille "ratios" tu prend la valeur de la dernière ligne
    puis veux selectionner sur la feuille "catalogue"
    Sheets("catalogue").Select ' ok!
    Range(Cells(InitialLigne, 1), Cells(ligne, 5)).Select ' pas de pb chez moi.
    comme je n'ai pas to fichier...j'ai forcé et ça marche donc il faut que tu saches
    quel est l'état de la variable ....
    0
  7. redrum
     
    Si je fusionne les deux feuilles en une seule, je n'ai plus de problème. Ceci semble corroborer ce que je disais mais sans que je comprenne pourquoi...
    0
  8. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    Si tu as solutionné tant mieux.
    0
  9. redrum
     
    Ben non, c'est pas solutionné car je voudrais travailler sur deux feuilles!
    0
  10. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    peux tu mettre ton fichier sur ci-joint.com?
    et poster le lien ici
    en enlevant les données confidentielles et alléger !!! évidemment.
    0
  11. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    je sèche car je n'ai pas d'erreur
    je dois partir pendant 2jours
    je contact michel_m
    A+
    0
  12. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    a la demande de l'ami bidoullieu

    le bouton se trouve dans la feuille "ratios"
    Private Sub ProductionCalo_Click()
    Dim RefLigne As Long, InitialLigne As Long, ligne As Long
    Dim plage As Range
    With Sheets("catalogue")
        InitialLigne = .Columns(1).Find("TOTO TEAM", .Range("A1")).Row
        ligne = .Range("A65536").End(xlUp).Row
         .Range(.Cells(InitialLigne, 1), .Cells(ligne, 5)).Copy
    End With
     
    RefLigne = Range("L65536").End(xlUp).Row + 2
    Cells(RefLigne, 12).Select
    ActiveSheet.Paste
    
    Columns("L:L").EntireColumn.AutoFit
    Columns("M:M").EntireColumn.AutoFit
    
    End Sub


    ta fonction "position" ne servait à rien et était une usine à gaz (évite de pomper des trucs sans piger)

    quand aux autres macro, c'est des catas... (excuses moi d'être direct)

    ce post uniquement pour rendre service à l'ami Bidouillieu
    0
  13. redrum
     
    Merci Michel pour ta réponse, même si elle n'est pas faite pour me rendre service ("ce post uniquement pour rendre service à l'ami Bidouillieu" (sic) )

    Je passe sur le ton légèrement discourtois. Les amateurs ont aussi le droit d'être mauvais et de vouloir progresser.
    0
  14. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    Bonjour redrum,

    As-tu solutionné ton problème?

    A+
    R
    0
  15. redrum
     
    Oui, je te remercie pour ton aide ainsi que celle de michel
    0