XL 2016 fusion de 2 colonnes avec données sans perte de données

anned972

XLDnaute Nouveau
bonjour,

j'ai 2 colonnes avec des données et j'aimerais les fusionner en une seule sans perdre les données.

est-ce possible ?

en vous remerciant.

Anne
 

Gégé-45550

XLDnaute Accro
bonjour,

j'ai 2 colonnes avec des données et j'aimerais les fusionner en une seule sans perdre les données.

est-ce possible ?

en vous remerciant.

Anne
Bonsoir,
sans fichier de test joint, vous risquez d'avoir très peu de réponses à votre demande.
Un simple couper/coller d'une colonne à coller à la fin de la précédente, puis un tri éventuel devraient suffire, non ?
Cordialement,
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Anned, et bienvenue sur XLD, Bonjour Gégé,
Pour illustrer les propos de Gégé, et "just for the fun", un exemple en PJ à adapter à votre contexte avec :
VB:
Sub CompileListes()
    DLA = [A65500].End(xlUp).Row                                        ' Dernière ligne Liste 1
    DLC = [C65500].End(xlUp).Row                                        ' Dernière ligne Liste 2
    Range("A" & DLA + 1 & ":A" & DLA + DLC) = Range("C1:C" & DLC).Value ' Copier Coller valeurs 2 dérrière 1
    [C1:C20].ClearContents                                              ' Suppression Liste2
    [A:A].RemoveDuplicates Columns:=1, Header:=xlNo                     ' Suppression doublons
End Sub
On peux ajuter, si nécessaire, un tri alpha sur la liste résultante avec :
Code:
[A:A].Resize(DLA + DLC).Sort key1:=[A1], order1:=xlAscending, Header:=xlNo
 

Pièces jointes

  • CompileListes.xlsm
    16 KB · Affichages: 5

anned972

XLDnaute Nouveau
bonjour,

Merci Gégé et Sylvanu pour votre aide.

je vous mets l'exemple refait depuis mon ordi perso, l'Excel n'est pas le même que celui que j'utilise au travail.

Donc, j'ai mis l'exemple de ce que je veux obtenir, sachant que c'est un fichier qui est ensuite intégrer dans le logiciel de compta et donc il ne faut pas modifier le nombre de colonne de ce que je veux obtenir.
j'avais essayé une colonne supplémentaire avec la formule =E2&" "&F2, ça marche, mais si je supprime les colonnes E et F forcément je n'ai plus de résultat dans la colonne créée.
donc, il faudrait que je puisse copier les données de la colonne F dans la colonne E et supprimer la colonne F.

j'ai regardé dans les collages spéciaux, mais je ne vois pas si une formule fonctionne, celles que j'ai essayé ne fonctionne pas.

les fichiers pouvant être assez important, ça me ferait gagné du temps dans la tâche. jusqu'à présent je remplissais manuellement les cases, mais je me suis rendue compte que le client rempli une case titre avec le numéro de facture du fournisseur et que je peux donc le récupérer, reste plus qu'à trouver l'astuce.

En vous remerciant encore.
 

Pièces jointes

  • exemple.xlsx
    9.5 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Un essai en PJ avec :
VB:
Sub MergeEF()
    If [F1] <> "Titre" Then  ' Sécurité, évite le merge de colonnes déjà éffectuée
        MsgBox "Compilation colonnes E et F déjà effectuée.": Exit Sub
    End If
    Application.ScreenUpdating = False
    DL = Range("A65500").End(xlUp).Row
    For L = 2 To DL
        Cells(L, "E") = Cells(L, "E") & "  ---  " & Cells(L, "F")
    Next L
    Columns("F:F").Delete Shift:=xlToLeft
    Columns("K:K").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Columns.AutoFit
End Sub
 

Pièces jointes

  • exemple (1).xlsm
    22.3 KB · Affichages: 1

Gégé-45550

XLDnaute Accro
bonjour,

Merci Gégé et Sylvanu pour votre aide.

je vous mets l'exemple refait depuis mon ordi perso, l'Excel n'est pas le même que celui que j'utilise au travail.

Donc, j'ai mis l'exemple de ce que je veux obtenir, sachant que c'est un fichier qui est ensuite intégrer dans le logiciel de compta et donc il ne faut pas modifier le nombre de colonne de ce que je veux obtenir.
j'avais essayé une colonne supplémentaire avec la formule =E2&" "&F2, ça marche, mais si je supprime les colonnes E et F forcément je n'ai plus de résultat dans la colonne créée.
donc, il faudrait que je puisse copier les données de la colonne F dans la colonne E et supprimer la colonne F.

j'ai regardé dans les collages spéciaux, mais je ne vois pas si une formule fonctionne, celles que j'ai essayé ne fonctionne pas.

les fichiers pouvant être assez important, ça me ferait gagné du temps dans la tâche. jusqu'à présent je remplissais manuellement les cases, mais je me suis rendue compte que le client rempli une case titre avec le numéro de facture du fournisseur et que je peux donc le récupérer, reste plus qu'à trouver l'astuce.

En vous remerciant encore.
Bonsoir anned972, sylvanu, le fil,
la macro de sylvanu, que je salue respectueusement au passage, est, comme toujours, parfaite (perso, pour calculer DL avec les dernières versions XL qui peuvent contenir jusqu'à 1 048 576 lignes, je préfère utiliser DL = Range("A" & Rows.Count).End(xlUp).Row).
Si toutefois les macros vous rebutent, la solution "manuelle" est assez simple.
Vous pouvez, dans une colonne inutilisée, par exemple (au hasard) en BA2, utiliser votre formule (=E2 &" "& F2) tirée vers le bas sur autant de lignes que nécessaire puis copier cette colonne de résultat et faire un collage spécial "valeurs uniquement" en E2. Ensuite, effacez les valeurs de la colonne F et supprimez la colonne BA (facultatif).
C'est manuel mais c'est assez rapide à faire et ça fonctionne très bien.
Cordialement,
 
Dernière édition:

cp4

XLDnaute Barbatruc
Bonsoir anned972, sylvanu, le fil,
la macro de sylvanu, que je salue respectueusement au passage, est, comme toujours, parfaite (perso, pour calculer DL avec les dernières versions XL qui peuvent contenir jusqu'à 1 048 576 lignes, je préfère utiliser DL = Range("A" & Rows.Count).End(xlUp).Row).
Si toutefois les macros vous rebutent, la solution "manuelle" est assez simple.
Vous pouvez, dans une colonne inutilisée, par exemple (au hasard) en BA2, utiliser votre formule (=E2 &" "& F2) tirée vers le bas sur autant de lignes que nécessaire puis copier cette colonne de résultat et faire un collage spécial "valeurs uniquement" en E2. Ensuite, effacez les valeurs de la colonne F et supprimez la colonne BA (facultatif).
C'est manuel mais c'est assez rapide à faire et ça fonctionne très bien.
Cordialement,
Bonjour tout le monde, le forum,
Il y a aussi ce code pour la dernière ligne non vide
VB:
DerniereLigne = Range("A1").SpecialCells(xlCellTypeLastCell).Row
Bon dimanche
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous :),

Les instructions avec End(xlup) ou SpecialCells(xlCellTypeLastCell) ne tiennent pas compte des lignes masquées (directement ou par filtre). Si les lignes masquées sont à la fin des données de la colonne alors le numéro de la dernière ligne sera faux.

La seule instruction que j'ai trouvée pour trouver la dernière cellule d'une colonne est :
VB:
der = Application.Max(Application.IfError(Application.Match(9 ^ 99, Columns(1)), 0), Application.IfError(Application.Match(String(255, "z"), Columns(1)), 0))
qui est l'équivalent de la fonction Excel :
VB:
=MAX(SIERREUR(EQUIV(9^99;A:A);0);SIERREUR(EQUIV(REPT("z";255);A:A);0))
 
Dernière édition:

Statistiques des forums

Discussions
312 209
Messages
2 086 267
Membres
103 168
dernier inscrit
isidore33