Macro excel

Bonjour,

Voila, j'ai besoin d'aide!

j'ai un document excel qui contient 159 feuilles. sur chaque feuille un tableau qui contient le même nombre de colonnes. Sur les colonnes C et D et E, certaines cellules sont restées vides.

Ce que j'ai besoin de faire, c'est remettre toutes les lignes de toutes les feuilles sur la même feuille, en supprimant les cellules vides sur les colonnes C ET D ET E (sur aucune des trois), ainsi que la première ligne de chaque feuille (qui contient le titre des colonnes).

Merci d'avance à qui voudra bien prendre un peu de son temps pour m'aider...

3 réponses

  1. Je viens de comprendre pourquoi j'ai ce problème.

    Pour obtenir les 159 feuilles, j'ai fait une première macro, qui avait pour résultat que toutes les feuilles portent le nom des cellules de la colonne A (dans colonne A, toutes les cellules portent le même nom, c'est un code, qui est donc également le nom de la feuille).

    Résultat, dans feuil1, les cellules de la colonne A, portent le nom de la feuille...

    Que faire? si je supprime la 1ere macro, mes cellules ne vont plus savoir comment s'appeler...

    Je ne sais pas si je suis très claire...
    1. ouhaa merci!! ça marche ... presque...! Le seul problème c'est que la colonne A de chacune des mes feuilles n'est pas prise en compte. A la place dans la feuille 1 (la ou les cellules sont collées après l'execution de la macro), il y a "feuille 1" sur toutes les lignes...

      Sinon pour la suppression des lignes vides, je vais faire simple avec un petit tri à la fin, ce sera très bien!
      1. Bonjour,

        Voici un premier jet qui regrouperas les données de toutes les feuilles
        sur la première feuille. Attention, si le nom des feuilles diffèrent, il te
        faudra aussi adapter.

        Option Explicit
        
        Sub XFR_Data()
        
            ' La procédure fonctionne si des données sont
            ' inscritent dans la colonne A de chaque feuille
        
            Dim WS As Worksheet
            Dim Plage As Range
            Dim Limite As Long, Boucle As Long
            
        
            Sheets("Feuil1").Select
            Limite = Range("A65536").End(xlUp).Row + 1
            Range("A" & Limite).Select
            
            For Each WS In Worksheets
                If (WS.CodeName <> "Feuil1") Then
                    WS.Select
                    Limite = Range("A65536").End(xlUp).Row
                    ' Ici la colonne F est choisi par hazard
                    ' il te faudra adapter
                    Set Plage = Range("A2:F" & Limite)
                    Plage.Select
                    Selection.Copy
                    Sheets("Feuil1").Select
                    ActiveSheet.Paste
                    Application.CutCopyMode = False
                    Limite = Range("A65536").End(xlUp).Row + 1
                    Range("A" & Limite).Select
                End If
            Next WS
            
        End Sub
        


        Si tu comprends cette procédure, alors je pourrai te proposer
        la suite pour nettoyer les cellules vides, car je n'ai pas exactement
        compris si tu veux supprimer la cellule ou la ligne complète.

        S'il s'agit de la cellule, il y aura décalage des données !!!

        Cdt

        Info