XL 2019 Descendre une valeur et récupérer la valeur commune

Meosus

XLDnaute Nouveau
Bonjour a tous,

je cherche une formule ou un VBA me permettant de décaler des valeurs en lui gardant sa valeur commune.

A la base, les valeur associé sont liée dans une seul cellule par un séparateur "/" (exemple: BBB/CCC) apres utilisation de la fonction "Données/Convertir" on les retrouve de façon BBB en 'C3' et CCC en 'D3' et la valeur commune toujours en B3. Je souhaiterais obtenir:

B3 (Valeur commune) C3 -> BBB
B4 (Valeur commune) C4 -> CCC

Exemple joint en Excel.

Decalage.PNG


merci d'avance pour vos retour

Meosus
 

Pièces jointes

  • DECALAGE.xlsx
    10.9 KB · Affichages: 9

job75

XLDnaute Barbatruc
Bonjour Meosus, WTF, JHA,

Voyez le fichier .xlsm joint et la macro affectée au bouton :
VB:
Sub Eclater()
Dim sep$, resu(), tablo, i&, vc, s, j%, n&
sep = "/"
ReDim resu(1 To Rows.Count, 1 To 2)
tablo = [A1].CurrentRegion.Resize(, 2) 'matrice, plus rapide
For i = 1 To UBound(tablo)
    vc = tablo(i, 1)
    s = Split(tablo(i, 2), sep)
    For j = 0 To UBound(s)
        n = n + 1
        resu(n, 1) = vc
        resu(n, 2) = s(j)
Next j, i
'---restitution---
With Feuil1 'CodeName de la feuille de destination, à adapter
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .[D1] '1ère cellule de destination, à adapter
        If n Then .Resize(n, 2) = resu
        .Offset(n).Resize(.Parent.Rows.Count - n - .Row + 1, 2).ClearContents 'RAZ en dessous
        .Resize(, 2).EntireColumn.AutoFit 'ajuste les largeurs
    End With
    With .UsedRange: End With 'actualise la barre de défilement verticale
End With
End Sub
Il n'est pas nécessaire d'utiliser la commande Convertir.

A+
 

Pièces jointes

  • Eclater(1).xlsm
    18.7 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
311 721
Messages
2 081 929
Membres
101 843
dernier inscrit
Thaly