Fonction "Transposer" conditionnel (si champs vide)

Bonjour,

je souhaite faire basculer les données du TCD, ici A5-A15 vers B4-B19, idem pour A16 qui regroupera tous ce qu'il y a en dessous pour les mettre sur la meme signe.

image

Objectif :

image

Si dessous l'excel avec l'onglet source et objectif.

9classeur6.xlsx (300.33 Ko)

Encore une fois merci pour votre collaboration.

D'une autre manière, ça serait un "TRANSPOSE" conditionnel si champs vide :

si "b" vide récupérer les cellules de la colonne et et les mettre en ligne

image

pour avoir ça comme résultat :

image

est ce possible ?
Voici l'excel :

16classeur6.zip (395.48 Ko)

Encore merci...

Bonsoir,

Essayez ceci:

Cdlt

Bonjour

8classeur6.zip (549.82 Ko)

Pourquoi ne pas le faire à la main, il n'y a que 8000 lignes.... je plaisante !!

Ci joint un fichier avec un traitement par une macro ==> onglet résultat

Teste la macro sur une feuille avec tes sources, sélectionne une cellule de ta feuille et Ctrl+Maj+T

A vérifier

Cordialement

FINDRH

La macro d'Arturo83 est plus rapide que l'éclair...... du haut niveau que je n'appréhende toujours pas, mais je ne désespère pas !!

Cordialement

FINDRH

Bonsoir à tous !

Simple curiosité de ma part : Quel est l'intérêt d'avoir un tableau de........695 colonnes ?

ça fonctionne parfaitement !

pour le nombre de colonne, c'est vrai que c'est important, cependant la BDD est faite ainsi.

si besoin de modifier le tableau, que dois je modifier sur la macro ?

Encore un grand merci à vous tous

bonjour le fil,

a premier vue V16 de Mac supporte les nouvelles fonctions (j'éspères)

Bonjour,

"si besoin de modifier le tableau, que dois je modifier sur la macro ?"

Normalement ,il n'y a rien à faire, si vous conservez les données en colonne A et B de la feuille "source".

Je vous renvoie le code, j'y ai ajouté l'effacement de la feuille "objectif" pour la réinitialiser avant l'importation.

Sub Transposer()
    Dim f1 As Worksheet, f2 As Worksheet
    Dim DerLig_f1 As Long, Lig_Dest As Long, i As Long, Lig_Dep As Long, Cpt As Long, Lig_Fin As Long
    Application.ScreenUpdating = False
    Set f1 = Sheets("source")
    Set f2 = Sheets("objectif")
    f2.Cells.ClearContents
    Lig_Dest = 1
    DerLig_f1 = f1.Range("A" & Rows.Count).End(xlUp).Row
    For i = DerLig_f1 To 2 Step -1
        A = f1.Cells(i, "A")
        Lig_Dep = i
        Lig_Fin = i
        Cpt = 0
        Do While f1.Cells(Lig_Fin, "A") = A
            Lig_Fin = Lig_Fin - 1
            Cpt = Cpt + 1
        Loop
        f2.Cells(Lig_Dest, "A") = A
        Range(f2.Cells(Lig_Dest, "B"), f2.Cells(Lig_Dest, Cpt + 1)).Value = Application.Transpose(Range(f1.Cells(Lig_Dep - Cpt + 1, "B"), f1.Cells(Lig_Dep, "B")).Value)
        Lig_Dest = Lig_Dest + 1
        i = i - Cpt + 1
    Next
    f2.Select
    Set f1 = Nothing
    Set f2 = Nothing
End Sub

Cdlt

Merci beaucoup Arturo83 !
Je vous souhaite une bonne journée à tous...

Rechercher des sujets similaires à "fonction transposer conditionnel champs vide"