Detection de tableau et suppression des doublure et des cases vides

zed9i

XLDnaute Nouveau
Bonjour tous les membres du groupe

Je vous remercie d’avance pour votre aide et votre présence pour nous aider.

d'abord je suis débutant en macro, mais j'ai essayé de faire un effort :confused: avant de vous solliciter.

Mon problème se résume dans :

Je reçois un fichier Excel avec des tableaux qui n'ont pas la même taille ou la même
organisation avec toujours des cellules fusionnées. Donc, j'ai essayé en utilisant des macro de refaire la mise en forme du fichier pour qu'il soit lisible.


-La ligne ‘ .MergeCells = False ‘ annule la fusion. En ce moment-là, toutes mes cellules
se remplit de la même info que contient la cellule principale.

-la ligne ' Selection.ClearContents ' supprime les cellules doubler mais le problème que il faudra à chaque fois adapter la macro suivant les tailles des tableau reçus

- la macro à la fin pour supprimer les cellules vides ne marche pas

NB : je viens de mettre, en pièce jointe, un fichier Excel contenant:
* feuille 1 : exemple du fichier reçus
* feuille 2 : exemple du fichier après l'annulation de fusionnement
* feuille 3 : exemple du résultat souhaité

Ma demande est d’avoir une macro qui me permet d'annuler la fusion des différentes cellules
de toute la feuille, de supprimer toutes les doublures et d’avoir une bonne mise en forme
du fichier dans tous les différents cas de nbr et de taille différente des tableaux :cool: .
 

Pièces jointes

  • exp_1_V1.xlsx.xls
    323.5 KB · Affichages: 54
  • exp_1_V1.xlsx.xls
    323.5 KB · Affichages: 51
  • exp_1_V1.xlsx.xls
    323.5 KB · Affichages: 54

homepyrof53

XLDnaute Occasionnel
Re : Detection de tableau et suppression des doublure et des cases vides

Bonjour,

N'ayant pas tout le temps nécessaire pour réaliser cette macro, voici une approche
Code:
Sub xx()
l1 = ActiveCell.Row
c1 = ActiveCell.Column
While Cells(l1, c1) <> ""
    l1 = ActiveCell.Row
    c1 = ActiveCell.Column

    tmp = l1
    nbmerge = ActiveCell.MergeArea.Columns.Count
    While Cells(tmp, c1) <> ""
        tmp = tmp + 1
    Wend
    l2 = tmp - 1
    c2 = c1 + nbmerge - 1
    With Range(Cells(l1, c1), Cells(l2, c2))
        .Select
        .MergeCells = False
    End With
    With Range(Cells(l1, c1 + 1), Cells(l2, c2))
        .Select
        .Delete Shift:=xlToLeft
    End With
    c1 = c1 + 1
    Cells(l1, c1).Select
Wend
End Sub


il faut sélectionner la première cellule d'un tableau exemple E18 et exécuter cette macro

Reste à développer la détection d'un tableau

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 294
Membres
103 171
dernier inscrit
clemm