Ecriture macro avec incrémentation de ligne

Résolu
Edaine Messages postés 63 Statut Membre -  
Christof422 Messages postés 990 Statut Membre -
Bonjour,

Je vais essayer d'être le plus explicite possibel !

J'ai commencé une macro,

je me suis aidée de l'enregistreur,

Je voudrai que ma macro me permette de copier coller une parte de feuille sur une autre,

C'est à dire que quand j'appuie sur un bouton ou que je déclenche ma macro, elle me colle cette partie de feuille A à partir de la cellule A1 de la feuille B, et qu'ensuite si je redéclenche plus tard cette macro, qu'elle copie en A35..

J'avais commencé par définir quelques variables mais je fais des erreurs de "syntaxtes" et autre, comme je démarre vba.. Du coup j'essaie de m'aider du code suivant pour écrire mais je ne m'en sors pas;

Sub FeuillePalette2()



Dim LignFeuille As Long
Dim FeExtra As Worksheet
Dim FeType As Worksheet
Dim FePalette As Worksheet

Set FeExtra = ThisWorkbook.Sheets("Extraction cia flu")
Set FeType = ThisWorkbook.Sheets("Feuille Type")
Set FePalette = ThisWorkbook.Sheets("Palettes contrôlées")

    
    FeType.Range("A1:F39").Copy
    FePalette.Range("A1").Select
    ActiveSheet.Paste
    Sheets("Palettes contrôlées").Select
    ActiveWindow.ScrollRow = 10
    Range("A39").Select
    ActiveSheet.Paste
    ActiveWindow.ScrollRow = 11
    ActiveWindow.ScrollRow = 18
    ActiveWindow.ScrollRow = 21
    ActiveWindow.ScrollRow = 22
    ActiveWindow.ScrollRow = 23
    ActiveWindow.ScrollRow = 24
    ActiveWindow.ScrollRow = 23
    ActiveWindow.ScrollRow = 18
    ActiveWindow.ScrollRow = 17
    ActiveWindow.ScrollRow = 16
    ActiveWindow.ScrollRow = 15
    ActiveWindow.ScrollRow = 14
    ActiveWindow.ScrollRow = 13
    ActiveWindow.ScrollRow = 12
    ActiveWindow.ScrollRow = 11
    ActiveWindow.ScrollRow = 10
    ActiveWindow.ScrollRow = 9
    ActiveWindow.ScrollRow = 8
    ActiveWindow.ScrollRow = 7
    ActiveWindow.ScrollRow = 6
    ActiveWindow.ScrollRow = 5
    ActiveWindow.ScrollRow = 4
    ActiveWindow.ScrollRow = 3
    Sheets("Feuille Type").Select
    Range("B11:E29").Select
    
    Range("E29").Activate
    Application.CutCopyMode = False
    Selection.ClearContents
    ActiveWindow.ScrollRow = 9
    ActiveWindow.ScrollRow = 8
    ActiveWindow.ScrollRow = 7
    ActiveWindow.ScrollRow = 6
    ActiveWindow.ScrollRow = 5
    ActiveWindow.ScrollRow = 4
    ActiveWindow.ScrollRow = 3
    ActiveWindow.ScrollRow = 2
    ActiveWindow.ScrollRow = 1
    Range("D3").Select
    Selection.ClearContents
    Range("C6").Select
    Selection.ClearContents
    Range("E8").Select
    Selection.ClearContents
End Sub


Si vous aviez des conseils de rédaction ou autre, celà m'aiderai grandement !

Merci d'avance,

8 réponses

  1. Christof422 Messages postés 990 Statut Membre 213
     
    Ces 3 lignes doivent suffire

    FeType.Range("A1:F39").Copy 'copie les cellule de A1 à F39 de la feuille Fetype  
    FePalette.Range("A1").Select 'selectionne la cellule A1 de la feuille Fepalette  
        ActiveSheet.Paste 'Colle la copie sur la feuille Fepalette (feuille active) 


    Avec ca tu devrai pouvoir arriver a tes fins.

    Le premier pas vers la solution est la recherche. Notre ami Google connaît sûrement la solution...
    0
  2. Edaine Messages postés 63 Statut Membre
     
    Nice,

    Je vais tenter :D

    Merci !
    0
  3. Edaine Messages postés 63 Statut Membre
     
    Bon j'ai essayé,

    Ca fonctionne bien, mais je n'arrive pas à intégrer mon incrémentation...

    J'ai essayé plein de trucs différents.

    J'ai tenté avec un If mais je ne sais pas trop comment faire.

    :s

    J'étais partie sur un truc du style :

    Si la cellule C3 n'est pas vide alors, il faut coller à LignFeuille + 39,

    J'ai essayé de différente façon, mais je n'ai toujours pas saisi la logique du vba ... Dès que je colle, ça colle à l'infini à partir de LignFeuille + 39 ...

    Comment faire pour dire " Coller une seule fois " ?
    0
  4. Christof422 Messages postés 990 Statut Membre 213
     
    Explique précisement ce que tu veux faire. Parce que je ne comprend pas tout.

    J'essayerai de te filé le code après.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Edaine Messages postés 63 Statut Membre
     
    J'ai ma plage A1:A39 sur FeType qui est tjs la même et qu eje modifie a l'aide d'une autre macro, du coup j'aimerai coller cette plage sur FePalette, mais si j'ai déjà une plage coller sur cette FePalette, j'aimerai qu'il la colle juste en dessous .. :s

    Du coup j'ai tenté en mettant LignFeuille, pour pouvoir ensuite mettre LignFeuille = LignFeuille + 39.

    Voilà j'espère avoir été précise ..

    Merci beaucoup !
    0
    1. Christof422 Messages postés 990 Statut Membre 213
       
      oui, c'est bon :).

      Je te regarde ca.
      0
  7. Christof422 Messages postés 990 Statut Membre 213
     
    Worksheets("Fetype").Range("A1", "A39").Copy
    Worksheets("Fepalette").Select
    If Cells(39, 1).Value = "" Then
    Range("A1").Select
    ActiveSheet.Paste
    Else
    Range("A40").Select
    ActiveSheet.Paste
    End If
    0
    1. Edaine Messages postés 63 Statut Membre
       
      Ca fait un truc bizarre,

      Ca copie que ma colonne A même si je modifie la plage de donnée..

      Et je ne peux vraiment pas insérer une variable pour selectionner ma cellule de "collage" ? De façon à ce qu'il cherche lui même ou coller.
      0
    2. Edaine Messages postés 63 Statut Membre
       
      Oh j'ai vu xD pour la colonne A :p
      0
    3. Edaine Messages postés 63 Statut Membre
       
      J'en deviens stupide .. Désolée ;)
      0
  8. Edaine Messages postés 63 Statut Membre
     
    En faite j'étais partie sur un truc dans ce style là,

    FeType.Range("A1:F39").Copy
    FePalette.Select

    LignFeuille = 1

    If Cells(LignFeuille, 3).Value = "" Then

    Range("A1").Select
    ActiveSheet.Paste

    LignFeuille = LignFeuille + 39

    Else:

    Range("A" & LignFeuille).Select
    ActiveSheet.Paste

    End If

    Pour pouvoir coller autant de fois que je veux sans me soucier de la destination. Sauf qu'évidemment, mon code merdouille :p Et que je ne sais pas ce que je dois rajouter ^^'
    0
  9. Christof422 Messages postés 990 Statut Membre 213
     
    voila avec cette maccro tu peux copier autant de fois que tu veux, cela se met a la suite avec un espace entre chaque.

    Worksheets("Fetype").Range("A1", "A39").Copy
    Worksheets("Fepalette").Select
    If Cells(39, 1).Value = "" Then
    Range("A1").Select
    ActiveSheet.Paste
    Else
    For i = 40 To 65500 Step 40
    If Cells(i, 1).Value = "" Then
    Range("A" & i).Select
    ActiveSheet.Paste
    Exit Sub
    End If
    Next i
    0
    1. Edaine Messages postés 63 Statut Membre
       
      Ca marche ! Merci beaucoup !

      Par contre est-ce que tu saurai me dire, pourquoi le logo que j'ai sur la FeType se copie de 4 à 6 fois au même endroit sur ma FePalette ? x_O

      C'est super bizarre :s

      Est-ce que tu aurais une diée ? ^^'
      0
    2. Edaine Messages postés 63 Statut Membre
       
      idée*
      0
    3. Christof422 Messages postés 990 Statut Membre 213
       
      Il est situé dans quelle cellule ce logo?
      0
    4. Edaine Messages postés 63 Statut Membre
       
      Euh il est "étalé" de B2 à B3 en gros
      0
    5. Christof422 Messages postés 990 Statut Membre 213
       
      Ben in doit dépasser sur les cases A2 et A3 donc il doit être copié avec.

      Déplace le plus vers la droite
      0