Mise en forme complexe

Bonjour a tous,

Merci d'avance de l'aide !

J'ai un tableau Excel que je reçois régulièrement, je dois le retraiter afin d'extraire les informations qui me sont utiles.

Mais, le tableau comporte des onglets et des cellules vides, ce qui me pose un problème dans ce que j'essaie de faire.

En effet, je passe par " l'enregistrement de macro ", mais les onglets vides et les cellules vides me pose beaucoup de problème.

J'ai besoin uniquement des informations suivantes pour chaque onglet :

La colonne A et la colonne J et le nom de l'onglet.

Pour obtenir dans une nouvelle feuille : Nom de l'onglet | contenu colonne A | contenu colonne J

Cette nouvelle feuille doit comprendre à la suite le contenu pour les onglets.

La difficulté, la colonne J est fusionnée

il y a des cellules vides entre chaque cellule avec de l'information, bien sûr jamais le même nombre (sinon, ce n'est pas drôle)

Des onglets vides, qu'il ne faut pas reprendre, mais qui ne sont pas les mêmes pour chaque tableau, ça me pose un problème…

Les onglets ne commencent pas toujours avec une cellule pleine, c'est ça qui me pose le plus de problème

Je vous joins le tableau anonymisé ainsi que l'onglet "résultat" qui est-ce que je dois obtenir.

Merci de votre aide !

Cordialement

Bonjour à tous !

Une proposition via Power Query :

Mettre à jour l'emplacement du fichier et actualiser le tout.

Bonjour,

Si j'ai bien compris il y a beaucoup de problèmes

Je propose la solution suivante en espérant avoir tout compris:

Code utilisé:

Sub synthese()
Dim Ws As Worksheet
Dim ligFin As Long, ligExport As Long
Dim tabA As Variant, tabJ As Variant
Dim nomOnglet As String
Dim ligDep As Integer

ligDep = 3

For Each Ws In ThisWorkbook.Worksheets
    If Not Ws.Name = "Resultat" Then
        With Ws
            ligFin = .Range("A" & Rows.Count).End(xlUp).Row
            If Not ligFin = 1 Then
                nomOnglet = Ws.Name

                tabA = .Range("A" & ligDep, "A" & ligFin)
                tabJ = .Range("J" & ligDep, "J" & ligFin)

                For i = 1 To UBound(tabA, 1)
                    If Not tabJ(i, 1) = "" Then
                        ligExport = ligExport + 1
                        Sheets("Resultat").Range("E" & ligExport) = nomOnglet
                        Sheets("Resultat").Range("F" & ligExport) = tabA(i, 1)
                        Sheets("Resultat").Range("G" & ligExport) = tabJ(i, 1)
                    End If
                Next i
            End If
        End With
    End If
Next Ws
End Sub

PS: Bonjour JFL, tu as été plus rapide que moi visiblement, en plus de proposer une solution avec le fameux Power Query

Rebonjour à vous deux,

Merci pour vos deux propositions,

Celle de JFL me convient parfaitement, même si celle de Ausecour est très bien aussi :) <3

Merci encore de votre aide !

Cordialement

Bonjour à tous de nouveau !

Je vous remercie de ce retour.

@Ausecour : J'ai triché....en consommant plus de café que de coutume ce matin...

Ah c'est pour ça!

C'est sûr que mon bol de lait froid fait pâle figure en comparaison, remarque avec la baisse des températures c'est bientôt le chocolat chaud!

Rechercher des sujets similaires à "mise forme complexe"