Bonjour le Forum,

La lecture du post:
https://www.developpez.net/forums/d1...sieurs-lignes/

apporte une solution partielle à ma problématique :
https://www.developpez.net/forums/d1...l-exploitable/

Repartant donc de cette proposition, je souhaiterai l'étendre à plusieurs colonnes tout en gardant l'alignement original des données.

je pars d'un PDF, extrait en XLS via un site web gratuit. Je compte me servir des tableaux obtenus comme outil de veille réglementaire. Le point bloquant actuel est que les cellules de la colonne B et C sont fusionnées verticalement au petit bonheur, le texte contenu est renvoyé à la ligne sans changement de ligne sur Excel, ce qui m’empêche tout traitement des données de ligne unique!

Votre solution serait donc de repérer les "Retours Chariots" afin d'insérer les sauts de lignes utiles - j'ai testé sur une colonne et cela fonctionne bien ! Je souhaiterai que mon tableau se voie en quelque sorte "défusionné" et enfin exploitable!

Voici ou j'en suis rendu :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Sub TestSpliterLesCellulesAvecRetourChariot()
 
    SpliterLesCellulesAvecRetourChariot Sheets("Source"), Sheets("Cible")
 
End Sub
 
Sub SpliterLesCellulesAvecRetourChariot(ByVal FeuilleSource As Worksheet, ByVal FeuilleCible As Worksheet)
 
Dim RetoursChariots As Variant
Dim I As Long, J As Long
Dim PremiereLigneSource As Long, DerniereLigneSource As Long
Dim LigneCible As Long
 
    With FeuilleCible
         LigneCible = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
    End With
 
    With FeuilleSource
         PremiereLigneSource = 1
         DerniereLigneSource = .Cells(.Rows.Count, 2).End(xlUp).Row
         PremiereColonneSource = 1
         DerniereColonneSource = 3
 
         For I = PremiereLigneSource To DerniereLigneSource
         For K = PremiereColonneSource To DerniereColonneSource
             RetoursChariots = Split(.Cells(I, K), Chr(10))
             If UBound(RetoursChariots) > 0 Then
                For J = LBound(RetoursChariots) To UBound(RetoursChariots)
                    With FeuilleCible
                         FeuilleCible.Cells(LigneCible, K) = Trim(RetoursChariots(J))
                         LigneCible = LigneCible + 1
                    End With
                Next J
             Else
                FeuilleCible.Cells(LigneCible, K) = Trim(.Cells(I, K))
                LigneCible = LigneCible + 1
             End If
             Next K
          Next I
   End With
End Sub
J'observe un décalage de 1 ligne entre la colonne B et la colonne 1 et encore 1 ligne entre la C et la B ... ? il doit s'agir d'une erreur de ma part. Puis des sauts de lignes coordonnés mais surnuméraires...

D'autre part, mais cela vient probablement du fichier d'origine, certaines cellules en C ne sont pas en face de leurs sœurs en B (43 occurences). Mais ailleurs ça tombe juste... (32 occurences)?

fichier TEST:

TEST NOMENCLATURE.xlsm
Merci pour vos observation / conseils !