XL 2019 Scinder une colonne en utilisant uniquement une ligne sur trois

pherbaux

XLDnaute Nouveau
Bonjour,

J'aimerais savoir comment il est possible, à partir d'une colonne comportant des informations récurrentes toutes les 3 lignes (nom, endroit, note) de créer 3 colonnes distinctes ne reprenant que l'information pertinente

Exemple de data
Colonne A
pierre
paris
12
simon
lille
15
sebastien
rennes
14

Exemple de résultat
Colonne A Colonne B Colonne C
Pierre paris 12
Simon lille 15
Sebastien rennes 14

Je ne trouve la transformation de colonne que dans le cas où les données seraient dans la même cellule mais ne sait pas comment créer ces colonnes avec la sélection automatique d'une cellule complète sur 3

Merci d'avance
 

ZAKAO

XLDnaute Junior
Bonjour @pherbaux,

Ci-joint un fichier avec une macro qui donne une première solution à votre problème.

VB:
Sub tri()

    Dim lr&, i As Long, j As Long, Colonne_cible&, Premiere_Colonne_Tableau&, Premiere_ligne_cible&
    
    Colonne_cible = 1
    Premiere_ligne_cible = 3
    Premiere_Colonne_Tableau = 4
    Premiere_ligne_Tableau = 2
    
    lr = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    
    If lr < Premiere_ligne_cible Then Exit Sub
    
    For i = Premiere_ligne_cible To lr Step 3
    
        ActiveSheet.Cells(Premiere_ligne_Tableau, Premiere_Colonne_Tableau) = ActiveSheet.Cells(i, Colonne_cible)
        ActiveSheet.Cells(Premiere_ligne_Tableau, Premiere_Colonne_Tableau + 1) = ActiveSheet.Cells(i + 1, Colonne_cible)
        ActiveSheet.Cells(Premiere_ligne_Tableau, Premiere_Colonne_Tableau + 2) = ActiveSheet.Cells(i + 2, Colonne_cible)
        
        Premiere_ligne_Tableau = Premiere_ligne_Tableau + 1
        
    Next
    
End Sub

Bye ;)
 

Pièces jointes

  • Test.xlsm
    16.9 KB · Affichages: 4
Dernière édition:

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour pherbaux, le forum

[édition : bonjour ZAKAO, Nairolf]

vous pouvez le faire par formule, comme dans l'exemple joint, et ensuite manuellement pour supprimer les lignes devenues inutiles.
appliquer les formules et étirez les
sélectionner vos colonnes B et C, faites un copier/coller valeurs
appliquez un filtre automatique sur les colonnes B et C
filtrez en ne gardant que les cellules vides
sélectionnez les lignes entières de votre tableau sans la ligne de titre, faites rechercher/atteindre/cellules visibles seulement
bouton droit supprimer la ligne.
votre tableau sera en 3 colonnes

Cordialement, @+
Animation.gif
 

Pièces jointes

  • exemple_3colonnes.xlsx
    9.5 KB · Affichages: 1
Dernière édition:

pherbaux

XLDnaute Nouveau
Bonjour @pherbaux,

Ci-joint un fichier avec une macro qui donne une première solution à votre problème.

VB:
Sub tri()

    Dim lr&, i As Long, j As Long, Colonne_cible&, Premiere_Colonne_Tableau&, Premiere_ligne_cible&
   
    Colonne_cible = 1
    Premiere_ligne_cible = 3
    Premiere_Colonne_Tableau = 4
    Premiere_ligne_Tableau = 2
   
    lr = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
   
    If lr < Premiere_ligne_cible Then Exit Sub
   
    For i = Premiere_ligne_cible To lr Step 3
   
        ActiveSheet.Cells(Premiere_ligne_Tableau, Premiere_Colonne_Tableau) = ActiveSheet.Cells(i, Colonne_cible)
        ActiveSheet.Cells(Premiere_ligne_Tableau, Premiere_Colonne_Tableau + 1) = ActiveSheet.Cells(i + 1, Colonne_cible)
        ActiveSheet.Cells(Premiere_ligne_Tableau, Premiere_Colonne_Tableau + 2) = ActiveSheet.Cells(i + 2, Colonne_cible)
       
        Premiere_ligne_Tableau = Premiere_ligne_Tableau + 1
       
    Next
   
End Sub

Bye ;)
merci la solution fonctionne! si d'autres l'utilise sans la modifier il faut prendre en compte que dans la solution proposée les datas prises en compte se font à partir de la 3e ligne de la colonne A ;)
 

ZAKAO

XLDnaute Junior
merci la solution fonctionne! si d'autres l'utilise sans la modifier il faut prendre en compte que dans la solution proposée les datas prises en compte se font à partir de la 3e ligne de la colonne A ;)
Cette solution est paramétrable en ouvrant le code.

VB:
    Colonne_cible = 1
    Premiere_ligne_cible = 3
    Premiere_Colonne_Tableau = 4
    Premiere_ligne_Tableau = 2

Dans ta remarque, c'est Premiere_ligne_cible qu'il faut modifier.

Bonne journée ;)
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

@Amilo et autres PowerQueristes.

@Amilo, super requête. C'est ce que j'aurais fait pour moi.
Mais je me suis vu reproché, il y a quelques temps le fait que mes requêtes n'utilisaient pas suffisamment l'interface.
C'est vrai qu'ici on considère souvent le demandeur comme un âne incapable d'apprendre et à qui il ne faut surtout pas demander un effort.
Et comme je le disais dans un autre fil, je crains que nos solutions soient des perles lancées aux cochons.
Peut-être faudrait-il une section Power Query du forum ?

Tout ça pour dire que, je ne sais plus ce qu'il faut faire... satisfaire la paresse des demandeurs ou proposer des requêtes qui demandent apprentissage et réflexion.
 

Amilo

XLDnaute Accro
Bonjour à tous,

@Hasco, merci pour votre message que j'ai lu avec bcp d'attention,
La question qui se pose effectivement est, est-ce aux intervenants de s'adapter au demandeur ou au demandeur de s'adapter aux propositions ?
Certainement les 2....,

Je dirais aussi, à chacun de faire son choix, faire un effort pour comprendre/de s'y intérèsser/de répondre ou pas....

En tout cas, je pense que toute solution intéressera l'un ou l'autre membre/internaute.
Concernant une section Power query du forum, personnellement, j'aime consulter d'autres solutions/méthodes et les voir dans un même fil au cas où... (formules, VBA, power query..),

Tout ça pour dire, faisons comme cela vient, laissons l'apprentissage et la réflexion à la bonne volonté des demandeurs ou à ceux qui le souhaitent ;)

Cordialement
 
Dernière édition:

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 869
dernier inscrit
radyreth