Répéter 1 macro sur plusieurs feuilles à la fois

Résolu
Metaux Messages postés 49 Statut Membre -  
Metaux Messages postés 49 Statut Membre -
Bonjour,

Mon fichier : https://www.cjoint.com/c/EFxoYgDzPw0

Sur ma feuille commande, j'ai inséré une macro. En gros, elle doit aller chercher les lignes qui a un x sur une autre feuille et recopier les cellules demandées sur la feuille commande.

La macro fonctionne très bien pour 1 seule feuille.

Je veux maintenant l'adapter pour qu'elle recopie les cellules demandées de toutes les feuilles spécifiées dans le code ou on y retrouve un x.

Dans le fichier joint, il faut que je réussisse à retrouver sur ma feuille commande les cellules demandées par mon code des lignes 7,8,10,11,12 et 14 de la feuille Données en plus des lignes 9,13,15,16,17,18,19 et 20

Je croyais avoir trouvé la solution avec mon départ de macro mais ca fonctionne pas :(

2 réponses

  1. Metaux Messages postés 49 Statut Membre
     
    J'ai l'impression que l'erreur c'est que lorsqu'il arrive à la feuille données2, il recopie les cellules demandées mais au lieu de recopier à la suite il recopie sur les mêmes lignes de la feuille commande ?? cmt gérer ca ?
    0
    1. Metaux Messages postés 49 Statut Membre
       
      Effectivement, j'ai fait des tests et c'est ce qui se produit. Donc au fond ma macro exécute bien ce que je lui demande.

      Mais chaque fois qu'elle réitère, elle recopie sur la feuille commande ces données sur les données de l'itération précédente (du coup on perd les données de l'itération qui lui précédait) et non pas à la suite comme je le voudrais.

      Auriez vous une idée comment lui dire de recopier les données de l'itération en cours à la suite des données de l'itération précédente ???

      Merci !
      0
  2. Gyrus Messages postés 3360 Statut Membre 526
     
    Bonjour,

    Essaie comme cela
    Private Sub Worksheet_Activate()
    Dim Ws As Worksheet
    Dim DerLig As Long
    Application.ScreenUpdating = False
    Range("A7:H6845").Clear
    ligne = 7
    For Each Ws In ActiveWorkbook.Worksheets
    If Ws.Name = "Données" Or Ws.Name = "Données2" Then
    DerLig = Ws.Range("A" & Rows.Count).End(xlUp).Row
    If DerLig = 6 Then MsgBox "Pas de données saisies!", vbCritical: Exit Sub
    For i = 7 To DerLig
    Cells(ligne, 1).Interior.ColorIndex = Ws.Cells(i, 2).Interior.ColorIndex
    If UCase(Ws.Range("A" & i)) = "X" Then
    Cells(ligne, 1) = Ws.Cells(i, 2)
    Cells(ligne, 2) = Ws.Cells(i, 3)
    Cells(ligne, 3) = Ws.Cells(i, 4)
    Cells(ligne, 5).FormulaR1C1 = "=RC[-1]*RC[-2]"
    ligne = ligne + 1
    End If
    Next
    End If
    Next Ws
    Range("D7").Select
    End Sub

    A+
    0
    1. Metaux Messages postés 49 Statut Membre
       
      thumbs up à toi !

      Ca fonctionne !!

      Merci bin !
      0