Power Query Power Query Gestion tableau

  • Initiateur de la discussion Initiateur de la discussion guypont
  • 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 !

guypont

XLDnaute Nouveau
Bonjour,
Dans le tableau joint, je souhaiterai obtenir le résultat suivant :

- Les n° de Compte dans la colonne CpteHT (TVA).Cpte doivent se retrouver dans le colonne Code Encaisst TVA.
- Les montants de la colonne Crédits HT doivent correspondre aux n° de compte de la colonne CpteHT (TVA).Cpte et se retrouver dans la colonne Crédit HT

Exemple résultat souhaité : Tableau joint avec les chiffres en rouge à bouger


Avez-Vous une solution ?

Merci
 

Pièces jointes

  • Capture d'écran 2026-02-25 150607.png
    Capture d'écran 2026-02-25 150607.png
    120.4 KB · Affichages: 14
  • Capture d'écran 2026-02-25 151128.png
    Capture d'écran 2026-02-25 151128.png
    19 KB · Affichages: 15
Re-,
J'aurais préféré tout le code (il y a déjà une erreur dans la ligne située juste au dessus de celle-là)
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau13"]}[Content],
    #"Colonnes renommées" = Table.RenameColumns(Source,{{"Taxes", "TVA"}}),
    #"Colonnes permutées" = Table.ReorderColumns(#"Colonnes renommées",{"Date", "Référence", "Description", "Encaissements", "TVA", "Total TTC"}),
    #"Type modifié Date avec /" = Table.TransformColumnTypes(#"Colonnes permutées",{{"Date", type date}}),
    #"Colonne fusionnée insérée Caisse du + date" = Table.AddColumn(#"Type modifié Date avec /", "Fusionné", each Text.Combine({"Caisse du ", Text.From([Date], "fr-FR")}), type text),
    #"Colonnes permutées1" = Table.ReorderColumns(#"Colonne fusionnée insérée Caisse du + date",{"Date", "Référence", "Description", "Encaissements", "TVA", "Fusionné", "Total TTC"}),
    #"Personnalisée ajoutée" = Table.AddColumn(#"Colonnes permutées1", "HT", each [Total TTC]-[TVA]),
    #"Colonnes permutées2" = Table.ReorderColumns(#"Personnalisée ajoutée",{"Date", "Référence", "Description", "Encaissements", "TVA", "HT", "Fusionné", "Total TTC"}),
    #"Colonnes renommées1" = Table.RenameColumns(#"Colonnes permutées2",{{"Encaissements", "Débit Encaissements"}, {"TVA", "Crédit TVA"}, {"HT", "Crédit HT"}}),
    #"Type modifié" = Table.TransformColumnTypes(#"Colonnes renommées1",{{"Crédit HT", type number}}),
    #"Colonne conditionnelle ajoutée Encaissement" = Table.AddColumn(#"Type modifié", "Personnalisé", each if Text.Contains([Description], "10%") then "TVA 10%" else if Text.Contains([Description], "20%") then "TVA 20%" else if Text.Contains([Description], "5.5%") then "TVA 5.5%" else null),
    #"Requêtes fusionnées" = Table.NestedJoin(#"Colonne conditionnelle ajoutée Encaissement", {"Description"}, #"Cpte Encaissement", {"Nature"}, "Cpte Encaissement", JoinKind.FullOuter),
    #"Cpte Encaissement développé" = Table.ExpandTableColumn(#"Requêtes fusionnées", "Cpte Encaissement", {"Cpte"}, {"Cpte Encaissement.Cpte"}),
    #"Colonnes permutées3" = Table.ReorderColumns(#"Cpte Encaissement développé",{"Date", "Référence", "Description", "Cpte Encaissement.Cpte", "Débit Encaissements", "Crédit TVA", "Crédit HT", "Fusionné", "Total TTC", "Personnalisé"}),
    #"Type modifié1 Description TVA 10 En texte" = Table.TransformColumnTypes(#"Colonnes permutées3",{{"Personnalisé", type text}, {"Description", type text}}),
    #"Dernières lignes supprimées" = Table.RemoveLastN(#"Type modifié1 Description TVA 10 En texte",27),
    #"Dernières lignes supprimées1" = Table.RemoveLastN(#"Dernières lignes supprimées",38),
    #"Dernières lignes supprimées2" = Table.RemoveLastN(#"Dernières lignes supprimées1",6),
    #"Requêtes fusionnées1 TVA" = Table.NestedJoin(#"Dernières lignes supprimées2", {"Personnalisé"}, #"Cptes TVA", {"TVA"}, "Cptes TVA", JoinKind.FullOuter),
    #"Cptes TVA développé" = Table.ExpandTableColumn(#"Requêtes fusionnées1 TVA", "Cptes TVA", {"Cpte"}, {"Cptes TVA.Cpte"}),
    #"Colonnes permutées4" = Table.ReorderColumns(#"Cptes TVA développé",{"Date", "Référence", "Description", "Cpte Encaissement.Cpte", "Débit Encaissements", "Cptes TVA.Cpte", "Crédit TVA", "Crédit HT", "Fusionné", "Total TTC", "Personnalisé"}),
    #"Requêtes fusionnées1 HT" = Table.NestedJoin(#"Colonnes permutées4", {"Personnalisé"}, Cptes_HT, {"HT"}, "Cptes_HT", JoinKind.FullOuter),
    #"Cptes_HT développé" = Table.ExpandTableColumn(#"Requêtes fusionnées1 HT", "Cptes_HT", {"Cpte"}, {"Cptes_HT.Cpte"}),
    #"Colonnes permutées5" = Table.ReorderColumns(#"Cptes_HT développé",{"Date", "Référence", "Description", "Cpte Encaissement.Cpte", "Débit Encaissements", "Cptes TVA.Cpte", "Crédit TVA", "Cptes_HT.Cpte", "Crédit HT", "Fusionné", "Total TTC", "Personnalisé"}),
    #"Colonnes fusionnées Encaisst + TVA" = Table.CombineColumns(Table.TransformColumnTypes(#"Colonnes permutées5", {{"Cpte Encaissement.Cpte", type text}, {"Cptes TVA.Cpte", type text}}, "fr-FR"),{"Cpte Encaissement.Cpte", "Cptes TVA.Cpte"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Fusionné.1"),
    #"Colonnes renommées2" = Table.RenameColumns(#"Colonnes fusionnées Encaisst + TVA",{{"Fusionné.1", "Cptes Encaisst + TVA"}}),
    #"Colonnes permutées6" = Table.ReorderColumns(#"Colonnes renommées2",{"Date", "Cptes Encaisst + TVA", "Débit Encaissements", "Crédit TVA", "Cptes_HT.Cpte", "Crédit HT", "Fusionné", "Total TTC", "Personnalisé", "Référence", "Description"}),
    #"Type modifié1" = Table.TransformColumnTypes(#"Colonnes permutées6",{{"Cptes_HT.Cpte", type text}}),
    #"Type modifié2" = Table.TransformColumnTypes(#"Type modifié1",{{"Débit Encaissements", type number}, {"Crédit TVA", type number}, {"Cptes_HT.Cpte", type text}, {"Fusionné", type text}}),
    #"Colonnes renommées3" = Table.RenameColumns(#"Type modifié2",{{"Cptes_HT.Cpte", "Cptes_HT"}}),
    #"Type modifié3" = Table.TransformColumnTypes(#"Colonnes renommées3",{{"Référence", type text}}),
    #"Lignes filtrées FiltreNull" = Table.SelectRows(#"Type modifié3", each [#"Cptes Encaisst + TVA"] <> null)
in
    #"Lignes filtrées FiltreNull"
    # GoupBy = Table.Group(FiltreNull, {#"Cptes Encaisst + TVA"}, {{"Tbl", each _
                & #table({#"Cptes Encaisst + TVA","Crédit TVA"},{{[#"Cpte_HT"]{0},[Crédit HT]{0}}})}},
                GroupKind.Local , (s,c) => Number.From(Text.StartsWith(c[#Cpte Encaisst + TVA], "44571")))[[Tbl]]

Bon courage
 
Re-,
Essaie ainsi (j'ai supposé qu'il n'y avait pas d'erreurs jusqu'à l'avant-dernière ligne)

PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau13"]}[Content],
    #"Colonnes renommées" = Table.RenameColumns(Source,{{"Taxes", "TVA"}}),
    #"Colonnes permutées" = Table.ReorderColumns(#"Colonnes renommées",{"Date", "Référence", "Description", "Encaissements", "TVA", "Total TTC"}),
    #"Type modifié Date avec /" = Table.TransformColumnTypes(#"Colonnes permutées",{{"Date", type date}}),
    #"Colonne fusionnée insérée Caisse du + date" = Table.AddColumn(#"Type modifié Date avec /", "Fusionné", each Text.Combine({"Caisse du ", Text.From([Date], "fr-FR")}), type text),
    #"Colonnes permutées1" = Table.ReorderColumns(#"Colonne fusionnée insérée Caisse du + date",{"Date", "Référence", "Description", "Encaissements", "TVA", "Fusionné", "Total TTC"}),
    #"Personnalisée ajoutée" = Table.AddColumn(#"Colonnes permutées1", "HT", each [Total TTC]-[TVA]),
    #"Colonnes permutées2" = Table.ReorderColumns(#"Personnalisée ajoutée",{"Date", "Référence", "Description", "Encaissements", "TVA", "HT", "Fusionné", "Total TTC"}),
    #"Colonnes renommées1" = Table.RenameColumns(#"Colonnes permutées2",{{"Encaissements", "Débit Encaissements"}, {"TVA", "Crédit TVA"}, {"HT", "Crédit HT"}}),
    #"Type modifié" = Table.TransformColumnTypes(#"Colonnes renommées1",{{"Crédit HT", type number}}),
    #"Colonne conditionnelle ajoutée Encaissement" = Table.AddColumn(#"Type modifié", "Personnalisé", each if Text.Contains([Description], "10%") then "TVA 10%" else if Text.Contains([Description], "20%") then "TVA 20%" else if Text.Contains([Description], "5.5%") then "TVA 5.5%" else null),
    #"Requêtes fusionnées" = Table.NestedJoin(#"Colonne conditionnelle ajoutée Encaissement", {"Description"}, #"Cpte Encaissement", {"Nature"}, "Cpte Encaissement", JoinKind.FullOuter),
    #"Cpte Encaissement développé" = Table.ExpandTableColumn(#"Requêtes fusionnées", "Cpte Encaissement", {"Cpte"}, {"Cpte Encaissement.Cpte"}),
    #"Colonnes permutées3" = Table.ReorderColumns(#"Cpte Encaissement développé",{"Date", "Référence", "Description", "Cpte Encaissement.Cpte", "Débit Encaissements", "Crédit TVA", "Crédit HT", "Fusionné", "Total TTC", "Personnalisé"}),
    #"Type modifié1 Description TVA 10 En texte" = Table.TransformColumnTypes(#"Colonnes permutées3",{{"Personnalisé", type text}, {"Description", type text}}),
    #"Dernières lignes supprimées" = Table.RemoveLastN(#"Type modifié1 Description TVA 10 En texte",27),
    #"Dernières lignes supprimées1" = Table.RemoveLastN(#"Dernières lignes supprimées",38),
    #"Dernières lignes supprimées2" = Table.RemoveLastN(#"Dernières lignes supprimées1",6),
    #"Requêtes fusionnées1 TVA" = Table.NestedJoin(#"Dernières lignes supprimées2", {"Personnalisé"}, #"Cptes TVA", {"TVA"}, "Cptes TVA", JoinKind.FullOuter),
    #"Cptes TVA développé" = Table.ExpandTableColumn(#"Requêtes fusionnées1 TVA", "Cptes TVA", {"Cpte"}, {"Cptes TVA.Cpte"}),
    #"Colonnes permutées4" = Table.ReorderColumns(#"Cptes TVA développé",{"Date", "Référence", "Description", "Cpte Encaissement.Cpte", "Débit Encaissements", "Cptes TVA.Cpte", "Crédit TVA", "Crédit HT", "Fusionné", "Total TTC", "Personnalisé"}),
    #"Requêtes fusionnées1 HT" = Table.NestedJoin(#"Colonnes permutées4", {"Personnalisé"}, Cptes_HT, {"HT"}, "Cptes_HT", JoinKind.FullOuter),
    #"Cptes_HT développé" = Table.ExpandTableColumn(#"Requêtes fusionnées1 HT", "Cptes_HT", {"Cpte"}, {"Cptes_HT.Cpte"}),
    #"Colonnes permutées5" = Table.ReorderColumns(#"Cptes_HT développé",{"Date", "Référence", "Description", "Cpte Encaissement.Cpte", "Débit Encaissements", "Cptes TVA.Cpte", "Crédit TVA", "Cptes_HT.Cpte", "Crédit HT", "Fusionné", "Total TTC", "Personnalisé"}),
    #"Colonnes fusionnées Encaisst + TVA" = Table.CombineColumns(Table.TransformColumnTypes(#"Colonnes permutées5", {{"Cpte Encaissement.Cpte", type text}, {"Cptes TVA.Cpte", type text}}, "fr-FR"),{"Cpte Encaissement.Cpte", "Cptes TVA.Cpte"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Fusionné.1"),
    #"Colonnes renommées2" = Table.RenameColumns(#"Colonnes fusionnées Encaisst + TVA",{{"Fusionné.1", "Cptes Encaisst + TVA"}}),
    #"Colonnes permutées6" = Table.ReorderColumns(#"Colonnes renommées2",{"Date", "Cptes Encaisst + TVA", "Débit Encaissements", "Crédit TVA", "Cptes_HT.Cpte", "Crédit HT", "Fusionné", "Total TTC", "Personnalisé", "Référence", "Description"}),
    #"Type modifié1" = Table.TransformColumnTypes(#"Colonnes permutées6",{{"Cptes_HT.Cpte", type text}}),
    #"Type modifié2" = Table.TransformColumnTypes(#"Type modifié1",{{"Débit Encaissements", type number}, {"Crédit TVA", type number}, {"Cptes_HT.Cpte", type text}, {"Fusionné", type text}}),
    #"Colonnes renommées3" = Table.RenameColumns(#"Type modifié2",{{"Cptes_HT.Cpte", "Cptes_HT"}}),
    #"Type modifié3" = Table.TransformColumnTypes(#"Colonnes renommées3",{{"Référence", type text}}),
    FiltreNull = Table.SelectRows(#"Type modifié3", each [#"Cptes Encaisst + TVA"] <> null),
    GoupBy = Table.Group(FiltreNull, {#"Cptes Encaisst + TVA"}, {{"Tbl", each _
                & #table({#"Cptes Encaisst + TVA","Crédit TVA"},{{[#"Cpte_HT"]{0},[Crédit HT]{0}}})}},
                GroupKind.Local , (s,c) => Number.From(Text.StartsWith(c[#"Cpte Encaisst + TVA"], "44571")))[[Tbl]]
    in
    GroupBy

Ceci dit, ce code peut très largement être optimisé, si cela t'intéresse (mais dans ce cas, il faudra le fichier, avec des données anonymisées)
 
Re-,
Essaie ainsi (j'ai supposé qu'il n'y avait pas d'erreurs jusqu'à l'avant-dernière ligne)

PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau13"]}[Content],
    #"Colonnes renommées" = Table.RenameColumns(Source,{{"Taxes", "TVA"}}),
    #"Colonnes permutées" = Table.ReorderColumns(#"Colonnes renommées",{"Date", "Référence", "Description", "Encaissements", "TVA", "Total TTC"}),
    #"Type modifié Date avec /" = Table.TransformColumnTypes(#"Colonnes permutées",{{"Date", type date}}),
    #"Colonne fusionnée insérée Caisse du + date" = Table.AddColumn(#"Type modifié Date avec /", "Fusionné", each Text.Combine({"Caisse du ", Text.From([Date], "fr-FR")}), type text),
    #"Colonnes permutées1" = Table.ReorderColumns(#"Colonne fusionnée insérée Caisse du + date",{"Date", "Référence", "Description", "Encaissements", "TVA", "Fusionné", "Total TTC"}),
    #"Personnalisée ajoutée" = Table.AddColumn(#"Colonnes permutées1", "HT", each [Total TTC]-[TVA]),
    #"Colonnes permutées2" = Table.ReorderColumns(#"Personnalisée ajoutée",{"Date", "Référence", "Description", "Encaissements", "TVA", "HT", "Fusionné", "Total TTC"}),
    #"Colonnes renommées1" = Table.RenameColumns(#"Colonnes permutées2",{{"Encaissements", "Débit Encaissements"}, {"TVA", "Crédit TVA"}, {"HT", "Crédit HT"}}),
    #"Type modifié" = Table.TransformColumnTypes(#"Colonnes renommées1",{{"Crédit HT", type number}}),
    #"Colonne conditionnelle ajoutée Encaissement" = Table.AddColumn(#"Type modifié", "Personnalisé", each if Text.Contains([Description], "10%") then "TVA 10%" else if Text.Contains([Description], "20%") then "TVA 20%" else if Text.Contains([Description], "5.5%") then "TVA 5.5%" else null),
    #"Requêtes fusionnées" = Table.NestedJoin(#"Colonne conditionnelle ajoutée Encaissement", {"Description"}, #"Cpte Encaissement", {"Nature"}, "Cpte Encaissement", JoinKind.FullOuter),
    #"Cpte Encaissement développé" = Table.ExpandTableColumn(#"Requêtes fusionnées", "Cpte Encaissement", {"Cpte"}, {"Cpte Encaissement.Cpte"}),
    #"Colonnes permutées3" = Table.ReorderColumns(#"Cpte Encaissement développé",{"Date", "Référence", "Description", "Cpte Encaissement.Cpte", "Débit Encaissements", "Crédit TVA", "Crédit HT", "Fusionné", "Total TTC", "Personnalisé"}),
    #"Type modifié1 Description TVA 10 En texte" = Table.TransformColumnTypes(#"Colonnes permutées3",{{"Personnalisé", type text}, {"Description", type text}}),
    #"Dernières lignes supprimées" = Table.RemoveLastN(#"Type modifié1 Description TVA 10 En texte",27),
    #"Dernières lignes supprimées1" = Table.RemoveLastN(#"Dernières lignes supprimées",38),
    #"Dernières lignes supprimées2" = Table.RemoveLastN(#"Dernières lignes supprimées1",6),
    #"Requêtes fusionnées1 TVA" = Table.NestedJoin(#"Dernières lignes supprimées2", {"Personnalisé"}, #"Cptes TVA", {"TVA"}, "Cptes TVA", JoinKind.FullOuter),
    #"Cptes TVA développé" = Table.ExpandTableColumn(#"Requêtes fusionnées1 TVA", "Cptes TVA", {"Cpte"}, {"Cptes TVA.Cpte"}),
    #"Colonnes permutées4" = Table.ReorderColumns(#"Cptes TVA développé",{"Date", "Référence", "Description", "Cpte Encaissement.Cpte", "Débit Encaissements", "Cptes TVA.Cpte", "Crédit TVA", "Crédit HT", "Fusionné", "Total TTC", "Personnalisé"}),
    #"Requêtes fusionnées1 HT" = Table.NestedJoin(#"Colonnes permutées4", {"Personnalisé"}, Cptes_HT, {"HT"}, "Cptes_HT", JoinKind.FullOuter),
    #"Cptes_HT développé" = Table.ExpandTableColumn(#"Requêtes fusionnées1 HT", "Cptes_HT", {"Cpte"}, {"Cptes_HT.Cpte"}),
    #"Colonnes permutées5" = Table.ReorderColumns(#"Cptes_HT développé",{"Date", "Référence", "Description", "Cpte Encaissement.Cpte", "Débit Encaissements", "Cptes TVA.Cpte", "Crédit TVA", "Cptes_HT.Cpte", "Crédit HT", "Fusionné", "Total TTC", "Personnalisé"}),
    #"Colonnes fusionnées Encaisst + TVA" = Table.CombineColumns(Table.TransformColumnTypes(#"Colonnes permutées5", {{"Cpte Encaissement.Cpte", type text}, {"Cptes TVA.Cpte", type text}}, "fr-FR"),{"Cpte Encaissement.Cpte", "Cptes TVA.Cpte"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Fusionné.1"),
    #"Colonnes renommées2" = Table.RenameColumns(#"Colonnes fusionnées Encaisst + TVA",{{"Fusionné.1", "Cptes Encaisst + TVA"}}),
    #"Colonnes permutées6" = Table.ReorderColumns(#"Colonnes renommées2",{"Date", "Cptes Encaisst + TVA", "Débit Encaissements", "Crédit TVA", "Cptes_HT.Cpte", "Crédit HT", "Fusionné", "Total TTC", "Personnalisé", "Référence", "Description"}),
    #"Type modifié1" = Table.TransformColumnTypes(#"Colonnes permutées6",{{"Cptes_HT.Cpte", type text}}),
    #"Type modifié2" = Table.TransformColumnTypes(#"Type modifié1",{{"Débit Encaissements", type number}, {"Crédit TVA", type number}, {"Cptes_HT.Cpte", type text}, {"Fusionné", type text}}),
    #"Colonnes renommées3" = Table.RenameColumns(#"Type modifié2",{{"Cptes_HT.Cpte", "Cptes_HT"}}),
    #"Type modifié3" = Table.TransformColumnTypes(#"Colonnes renommées3",{{"Référence", type text}}),
    FiltreNull = Table.SelectRows(#"Type modifié3", each [#"Cptes Encaisst + TVA"] <> null),
    GoupBy = Table.Group(FiltreNull, {#"Cptes Encaisst + TVA"}, {{"Tbl", each _
                & #table({#"Cptes Encaisst + TVA","Crédit TVA"},{{[#"Cpte_HT"]{0},[Crédit HT]{0}}})}},
                GroupKind.Local , (s,c) => Number.From(Text.StartsWith(c[#"Cpte Encaisst + TVA"], "44571")))[[Tbl]]
    in
    GroupBy

Ceci dit, ce code peut très largement être optimisé, si cela t'intéresse (mais dans ce cas, il faudra le fichier, avec des données anonymisées)
Toujours une erreur. Je te propose de jeter un oeil au fichier

Merci
 

Pièces jointes

Re-,
J'ai regardé, et j'ai un gros doute...
Est-ce que l'ordre des données, dès le début, a une importance?
Lors des différentes fusions, ces lignes prennent un ordre aléatoire, ce qui semble désorganiser le résultat...
Ex : avant la 1ère fusion :
1772123753694.png

Puis, dès le développement de la fusion :
1772123807960.png

On peut voir que les lignes n'ont plus le même ordre....
 
Re-,
J'ai regardé, et j'ai un gros doute...
Est-ce que l'ordre des données, dès le début, a une importance?
Lors des différentes fusions, ces lignes prennent un ordre aléatoire, ce qui semble désorganiser le résultat...
Ex : avant la 1ère fusion :
Regarde la pièce jointe 1228170
Puis, dès le développement de la fusion :
Regarde la pièce jointe 1228171
On peut voir que les lignes n'ont plus le même ordre....
Le résultat final doit avoir une chronologie sur la date comme sur tes tableaux
Dans la colonne qui regroupe tous les comptes (706120; 530000; 4457..) l'ordre n'a pas d'importance mais sur chaque journée, chaque compte doit apparaitre 1 seule fois
 
Cette solution (2) est plus légère mais la rapidité reste la même :
VB:
Private Sub WorkSheet_Activate()
Dim tablo, ub&, resu(), i&, n&, mem1 As Variant, mem2 As Variant
With [Tableau1_1] 'tableau structuré
    If Not .ListObject.DataBodyRange Is Nothing Then
        tablo = .Resize(.Rows.Count + 1) 'matrice, plus rapide, 1 ligne vide ajoutée
        ub = UBound(tablo) - 1
        ReDim resu(1 To 2 * ub, 1 To 4)
        For i = 1 To ub
            If tablo(i, 3) <> "" Then
                n = n + 1
                resu(n, 1) = tablo(i, 1): resu(n, 2) = tablo(i, 3)
                resu(n, 3) = tablo(i, 4): resu(n, 4) = tablo(i, 5)
                If tablo(i, 6) & tablo(i, 7) <> "" Then mem1 = tablo(i, 6): mem2 = tablo(i, 7)
                If (tablo(i + 1, 6) & tablo(i + 1, 7) <> "" Or i = ub) And mem1 & mem2 <> "" Then
                    n = n + 1
                    resu(n, 2) = mem2: resu(n, 4) = mem1
                    mem1 = Empty: mem2 = Empty
                End If
            End If
        Next i
    End If
End With
'---restitution---
With [A2] '1ère cellule de destination
    If n Then .Resize(n, 4) = resu
    .Offset(n).Resize(Rows.Count - n - .Row + 1, 4).ClearContents 'RAZ
End With
With UsedRange: End With 'actualise la barre de défilement verticale
End Sub
J'ai testé en recopiant le tableau source sur 211 000 lignes, la macro s'exécute chez moi en 1,8 seconde.
 

Pièces jointes

Cette solution (2) est plus légère mais la rapidité reste la même :
VB:
Private Sub WorkSheet_Activate()
Dim tablo, ub&, resu(), i&, n&, mem1 As Variant, mem2 As Variant
With [Tableau1_1] 'tableau structuré
    If Not .ListObject.DataBodyRange Is Nothing Then
        tablo = .Resize(.Rows.Count + 1) 'matrice, plus rapide, 1 ligne vide ajoutée
        ub = UBound(tablo) - 1
        ReDim resu(1 To 2 * ub, 1 To 4)
        For i = 1 To ub
            If tablo(i, 3) <> "" Then
                n = n + 1
                resu(n, 1) = tablo(i, 1): resu(n, 2) = tablo(i, 3)
                resu(n, 3) = tablo(i, 4): resu(n, 4) = tablo(i, 5)
                If tablo(i, 6) & tablo(i, 7) <> "" Then mem1 = tablo(i, 6): mem2 = tablo(i, 7)
                If (tablo(i + 1, 6) & tablo(i + 1, 7) <> "" Or i = ub) And mem1 & mem2 <> "" Then
                    n = n + 1
                    resu(n, 2) = mem2: resu(n, 4) = mem1
                    mem1 = Empty: mem2 = Empty
                End If
            End If
        Next i
    End If
End With
'---restitution---
With [A2] '1ère cellule de destination
    If n Then .Resize(n, 4) = resu
    .Offset(n).Resize(Rows.Count - n - .Row + 1, 4).ClearContents 'RAZ
End With
With UsedRange: End With 'actualise la barre de défilement verticale
End Sub
J'ai testé en recopiant le tableau source sur 211 000 lignes, la macro s'exécute chez moi en 1,8 seconde.
Hello Job
C'est bien, mais le tableau que tu utilises, ben, il n'existe pas dans la vraie vie...
Il faut partir du tableau13, de l'onglet "Original", dans son dernier fichier...
Bonne soirée
 
- 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
10
Affichages
691
Réponses
26
Affichages
2 K
Retour