XL 2016 Convertir en tableau

  • Initiateur de la discussion Initiateur de la discussion vivi21
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

vivi21

XLDnaute Occasionnel
Bonjour,

J'ai un fichier constitué de plusieurs feuilles mensuelles et une feuille construite par une consolidation des autres feuilles.

VB:
Sub Consolider()

    'On désactive le raffraichissement de l'écran scintillement
    Application.ScreenUpdating = False
    'On appelle la procédure permettant d'effacer les données
    EffaceConsolidation
   '
   '
   'On va créer une boucle permettant de lire toutes les feuilles à consolider
    'ici nous avons 12 feuilles Janvier à Décembre
   
    'nomfeuille = ActiveSheet.Name //variable permettant d'afficher
   
    For j = 5 To 16 'on parcours les 12 premières feuilles // ici 4 est janvier et 15 decembre car j'ai mes autres feuilles de masquer
   
        'On sélectionne la première feuille
        Sheets(j).Select
        'MsgBox (ActiveSheet.Name) afficher une popup pour voir le déroulement
        'On se positionne sur la dernière ligne non vide
        DerniereLigne = Range("A1000000").End(xlUp).Row
        'On parcours tout le tableau à partir de la ligne pour copier chacune ligne
        For i = 12 To DerniereLigne
            'On sélectionne la première feuille
            Sheets(j).Select
            'On sélectionner la première ligne
            Rows(i).Select
            'On copie la ligne
            Selection.Copy
            'Où, sur la feuille consolidation, il faut donc la sélectionner
            Sheets("Consolidation").Select
            'Il faut trouver la dernière ligne non vide de la feuille consolidation
            LastRowConsolidation = Range("A1000000").End(xlUp).Row + 1
            'On sélectionne la cellule vide et la première colonne
            Cells(LastRowConsolidation, 1).Select
            'Une fois positionné, on colle les données
            ActiveSheet.Paste
            Application.CutCopyMode = False
       
        Next i
   
    Next j

    'On réactive le raffraichissement de l'écran scintillement
    Application.ScreenUpdating = True
    Sheets("Analyse_activites").Select
    ActiveSheet.PivotTables("TCD1").PivotCache.Refresh
    'On affiche un message qui prévient que la consolidation est terminée
    MsgBox "La consolidation est terminée...", vbOKOnly + vbInformation, "Message"
Worksheets("Consolidation").Unprotect "Aa"
Worksheets("Consolidation").Visible = False
   
End Sub

Le résultats de cette consolidation en pièce jointe.
Le fichier est attribué à chaque personnel pour recenser leurs activités.

Pour pouvoir récupérer la feuille de consolidation par personne (car les fichiers de chaque personne ne sont pas au même endroit), j'ai besoin que celle-ci soit au format tableau.

Une fois que cette feuille sera en tableau je pourrai toutes les dupliquer pour les consolider de nouveau pour l'ensemble de l'équipe.

Merci pour votre aiguillage, aide,...

Vivi
 

Pièces jointes

Hello

je ne comprend pas trop ton problème...
pour transformer ton tableau de données en table structurée
1) tu selectionnes le tableau avec entetes
2) menu Style / Mettre sous forme de tableau

j'en profite pour simplifier ta macro :
VB:
Sub Consolider()

    'On désactive le raffraichissement de l'écran scintillement
    Application.ScreenUpdating = False
    'On appelle la procédure permettant d'effacer les données
    EffaceConsolidation
   '
   '
   'On va créer une boucle permettant de lire toutes les feuilles à consolider
    'ici nous avons 12 feuilles Janvier à Décembre
  
    'nomfeuille = ActiveSheet.Name //variable permettant d'afficher
  
    For j = 5 To 16 'on parcours les 12 premières feuilles // ici 4 est janvier et 15 decembre car j'ai mes autres feuilles de masquer
  
        
        With Sheets(j) 'évite de selectionner la feuille
        'MsgBox (ActiveSheet.Name) afficher une popup pour voir le déroulement
        'On se positionne sur la dernière ligne non vide
            DerniereLigne = .Range("A" & .Rows.Count).End(xlUp).Row
            'On parcours tout le tableau à partir de la ligne pour copier chacune ligne
            For i = 12 To DerniereLigne
                .Rows(i).Copy Destination:=Sheets("Consolidation").Range("A" & Rows.Count).End(xlUp).Row + 1
            Next i
        End With
    Next j

    'On réactive le raffraichissement de l'écran scintillement
    Application.ScreenUpdating = True
    Sheets("Analyse_activites").Select
    ActiveSheet.PivotTables("TCD1").PivotCache.Refresh
    'On affiche un message qui prévient que la consolidation est terminée
    MsgBox "La consolidation est terminée...", vbOKOnly + vbInformation, "Message"
Worksheets("Consolidation").Unprotect "Aa"
Worksheets("Consolidation").Visible = False
  
End Sub
 
Bonj
Hello

je ne comprend pas trop ton problème...
pour transformer ton tableau de données en table structurée
1) tu selectionnes le tableau avec entetes
2) menu Style / Mettre sous forme de tableau

j'en profite pour simplifier ta macro :
VB:
Sub Consolider()

    'On désactive le raffraichissement de l'écran scintillement
    Application.ScreenUpdating = False
    'On appelle la procédure permettant d'effacer les données
    EffaceConsolidation
   '
   '
   'On va créer une boucle permettant de lire toutes les feuilles à consolider
    'ici nous avons 12 feuilles Janvier à Décembre
 
    'nomfeuille = ActiveSheet.Name //variable permettant d'afficher
 
    For j = 5 To 16 'on parcours les 12 premières feuilles // ici 4 est janvier et 15 decembre car j'ai mes autres feuilles de masquer
 
       
        With Sheets(j) 'évite de selectionner la feuille
        'MsgBox (ActiveSheet.Name) afficher une popup pour voir le déroulement
        'On se positionne sur la dernière ligne non vide
            DerniereLigne = .Range("A" & .Rows.Count).End(xlUp).Row
            'On parcours tout le tableau à partir de la ligne pour copier chacune ligne
            For i = 12 To DerniereLigne
                .Rows(i).Copy Destination:=Sheets("Consolidation").Range("A" & Rows.Count).End(xlUp).Row + 1
            Next i
        End With
    Next j

    'On réactive le raffraichissement de l'écran scintillement
    Application.ScreenUpdating = True
    Sheets("Analyse_activites").Select
    ActiveSheet.PivotTables("TCD1").PivotCache.Refresh
    'On affiche un message qui prévient que la consolidation est terminée
    MsgBox "La consolidation est terminée...", vbOKOnly + vbInformation, "Message"
Worksheets("Consolidation").Unprotect "Aa"
Worksheets("Consolidation").Visible = False
 
End Sub
Bonjour Vgendron,

Oui, je suis d'accord avec ta procédure. Sauf que je dois faire cette manipulation tous les 2 mois pour obtenir les activités de chacun et je voulais trouvé une formule ou macro qui me l'automatise pour plus de faciliter et de gain de temps.
Vivi
 
Bonjour @vivi21 🙂, @vgendron 😉,

Si j'ai bien compris, code ci-dessous à mettre dans un module standard et exécuter.
VB:
Option Explicit

Sub CréerUnTableauDansExcel()
   Dim plage As Range
   With ActiveWorkbook.Sheets("Feuil1") 'feuille à adapter
      Set plage = .Range("A3:I" & .Range("A" & Rows.Count).End(xlUp).Row)
      .ListObjects.Add(xlSrcRange, plage, , xlYes).Name = "Tableau1" 'nom tableau à adapter si besoin
   End With
End Sub

A+
 
Bonjour à tous

Ce type de consolidation se construit en quelques clics avec PowerQuery (intégré à Excel), que les onglets contiennent ou non des tableaux structurés, même si ceux-ci sont préférables
 
Dernière édition:
Hello

je ne comprend pas trop ton problème...
pour transformer ton tableau de données en table structurée
1) tu selectionnes le tableau avec entetes
2) menu Style / Mettre sous forme de tableau

j'en profite pour simplifier ta macro :
VB:
Sub Consolider()

    'On désactive le raffraichissement de l'écran scintillement
    Application.ScreenUpdating = False
    'On appelle la procédure permettant d'effacer les données
    EffaceConsolidation
   '
   '
   'On va créer une boucle permettant de lire toutes les feuilles à consolider
    'ici nous avons 12 feuilles Janvier à Décembre
 
    'nomfeuille = ActiveSheet.Name //variable permettant d'afficher
 
    For j = 5 To 16 'on parcours les 12 premières feuilles // ici 4 est janvier et 15 decembre car j'ai mes autres feuilles de masquer
 
       
        With Sheets(j) 'évite de selectionner la feuille
        'MsgBox (ActiveSheet.Name) afficher une popup pour voir le déroulement
        'On se positionne sur la dernière ligne non vide
            DerniereLigne = .Range("A" & .Rows.Count).End(xlUp).Row
            'On parcours tout le tableau à partir de la ligne pour copier chacune ligne
            For i = 12 To DerniereLigne
                .Rows(i).Copy Destination:=Sheets("Consolidation").Range("A" & Rows.Count).End(xlUp).Row + 1
            Next i
        End With
    Next j

    'On réactive le raffraichissement de l'écran scintillement
    Application.ScreenUpdating = True
    Sheets("Analyse_activites").Select
    ActiveSheet.PivotTables("TCD1").PivotCache.Refresh
    'On affiche un message qui prévient que la consolidation est terminée
    MsgBox "La consolidation est terminée...", vbOKOnly + vbInformation, "Message"
Worksheets("Consolidation").Unprotect "Aa"
Worksheets("Consolidation").Visible = False
 
End Sub
Chris,

J'ai un bug lorsque je lance la macro. Il m'indique une erreur d'execution 1004

VB:
 'On réactive le raffraichissement de l'écran scintillement
    Application.ScreenUpdating = True
    Sheets("Analyse_activites").Select
    ActiveSheet.PivotTables("TCD10").PivotCache.Refresh
    'On affiche un message qui prévient que la consolidation est terminée
    MsgBox "La consolidation est terminée...", vbOKOnly + vbInformation, "Message"
Worksheets("Consolidation").Unprotect "Aa"
Worksheets("Consolidation").Visible = False

Du coup, il ne me mets pas à jour mon TCD.
J'ai changé le nom du TCD mais sans succès.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
114
Réponses
3
Affichages
544
Réponses
10
Affichages
494
Retour