Macro copier coller lignes tableaux non vides dans tableau de synthèse

bast0504

XLDnaute Occasionnel
Bonjour

Pourriez-vous me dire quelle macro pourrait me permettre de copier coller en valeur uniquement les lignes non vides dans le tableau de synthèse.

Merci
 

Pièces jointes

  • Tableau.xlsm
    10.1 KB · Affichages: 137
  • Tableau.xlsm
    10.1 KB · Affichages: 146
  • Tableau.xlsm
    10.1 KB · Affichages: 142

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro copier coller lignes tableaux non vides dans tableau de synthèse

Bonsoir Bast, bonsoir le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim o As Object 'déclare la variable o (Onglet)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (Plage)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
Dim pli As Range 'déclare la variable pli (Plage en LIgne)

For Each o In Sheets 'boucle 1 : sour tous les onglets du classeur
    If Not o.Name = "Synthese" Then 'condition 1 : si le nom de l'onglet est différent de "Synthese"
        'définit la dernière ligne éditée dl de la colonne 1 (=A) de l'onglet o
        dl = o.Cells(Application.Rows.Count, 1).End(xlUp).Row
        Set pl = o.Range("A3:A" & dl) 'définit la plage pl
        For Each cel In pl 'boucle 2 : sur toutes les cellules cel de la plage pl
            Set pli = o.Range(cel, cel.Offset(0, 13)) 'définit la plage en ligne pli
            'condition 2 : si le nombre de valeurs dans la plage pli est égal à 14
            If Application.WorksheetFunction.CountA(pli) = 14 Then
                'définit la cellule de destination dest
                Set dest = Sheets("Synthese").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)
                pli.Copy dest 'copie la plage pli et la colle dans dest
            End If 'fin de la condition 2
        Next cel 'prochaine cellule de la boucle 2
    End If 'fin de la condition 1
Next o 'prochain onglet de la boucle 1
End Sub
 

Si...

XLDnaute Barbatruc
Re : Macro copier coller lignes tableaux non vides dans tableau de synthèse

salut

Si... tu veux une synthèse même avec des mois "vides", une solution peut-être dans le fichier joint.
Dans la page de code de la feuille cible (Synthese) :
Code:
Sub Va()
  Dim L As Long, F As Worksheet
  Dim Li As Range, C As Range
  L = 3
  Rows("3:1000") = "" 'ou + Si... nécessaire
  For Each F In Sheets
    If F.Name <> Me.Name Then
      For Each C In F.Range("A3", F.Cells(Rows.Count, 1).End(xlUp))
        Set Li = C.Resize(1, 13)
        If Application.CountA(Li) > 2 Then
          Li.Copy Sheets("Synthese").Cells(L, 1)
          L = L + 1
        End If
      Next
    End If
  Next
End Sub
 

Pièces jointes

  • Dispatche(VBA).xlsm
    20.5 KB · Affichages: 146

bast0504

XLDnaute Occasionnel
Re : Macro copier coller lignes tableaux non vides dans tableau de synthèse

Bonjour à tous

Merci ROBERT, Merci SI pour ces deux codes qui marchent à merveille. Comment apprendre à codifier comme vous le faites ?

Sinon

1-comment je pourrais modifier ces codes de manière à préciser les onglets dans lesquelles je souhaite copier les lignes que je veux (mon fichier peux avoir plusieurs onglets)

et

2-dans chaque onglet comment copier uniquement la partie que je veux (dans ce nouveau cas la partie en jaune) à savoir les lignes différents de 0 ou non vides (c-a-d possédant une info)

Merci beaucoup
 

Pièces jointes

  • Tableau.xlsm
    21 KB · Affichages: 98
  • Tableau.xlsm
    21 KB · Affichages: 95
  • Tableau.xlsm
    21 KB · Affichages: 83

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro copier coller lignes tableaux non vides dans tableau de synthèse

Bonjour le fil, bonjour le forum,

Désolé mais j'ai absolument pas compris ta manière de définir les lignes concernée... En pièce jointe une proposition avec une UserForm pour définir les onglets et une InputBox pour définir les lignes (il te suffit de cliquer glisser à l’extrême gauche là ou sont inscrits les numéros de ligne)...
Le fichier :
 

Pièces jointes

  • bast_v01.xlsm
    33.5 KB · Affichages: 98

bast0504

XLDnaute Occasionnel
Re : Macro copier coller lignes tableaux non vides dans tableau de synthèse

Bonjour Robert, Bonjour le forum,

L'idée c que pour les onglets spécifiques Renault, Peugeot et Citroen, je copie colle en valeur les données chargées dans les parties jaunes non vides

Ainsi dans la macro préciser que ceci se fait uniquement pour les onglets Renault, Peugeot et Citroen et que le copier coller en valeur concerne les zones "range" en jaune


Merci
 

Si...

XLDnaute Barbatruc
Re : Macro copier coller lignes tableaux non vides dans tableau de synthèse

salut(ous)

Si... tu connais les feuilles de destination, peut-être ainsi (macro lancée par double clic sur A1 des feuilles d'origine par exemple).
 

Pièces jointes

  • DispatcheSi.xlsm
    36.1 KB · Affichages: 100
  • DispatcheSi.xls
    60 KB · Affichages: 100

bast0504

XLDnaute Occasionnel
Re : Macro copier coller lignes tableaux non vides dans tableau de synthèse

Bonjour à tous

Merci Robert et Si pour vos réponses

Si.. un dernier point, ton programme commence bien mais je veux au final copier les parties en jaunes dans un seul onglet, l'onglet synthèse et non dans des onglets différents. Comment ajuster la macro pour ça ?

De plus pourquoi renommer les onglets à part , pourquoi ne pas les intégrer directement dans la macro principale ?

Merci à tous
 

Si...

XLDnaute Barbatruc
Re : Macro copier coller lignes tableaux non vides dans tableau de synthèse

salut(ous)

à tester (dans la page de code de la feuille Synthese)
Code:
Sub va()
  Dim L As Long, F As Worksheet
  Dim C As Range, LI As Range
  L = 2
  Rows("2:1000") = "" 'ou + Si... nécessaire
  For Each F In Sheets
    If F.Name = "Renault" Or F.Name = "Peugeot" Or F.Name = "Citroen" Then
      For Each C In F.Range("A13", F.Cells(Rows.Count, 1).End(xlUp))
        Set LI = C.Resize(1, 14)
        If Application.CountIf(LI, 0) = 0 Then
          Cells(L, 1).Resize(1, 14).Value = LI.Value
          L = L + 1
        End If
      Next
    End If
  Next
End Sub
 

Malik

XLDnaute Nouveau
Bonjour

Pourriez-vous me dire comment modifier ma macro pour que les cellules vide ne se copie pas:

Sub Macro3()

ActiveSheet.Unprotect
Range("B7:G7").Select
Selection.Copy
Range("B6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B7:C7").Select
Application.CutCopyMode = False
Selection.ClearContents
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16