XL 2016 Recherche valeur dans cellule et revoi les caractères suivants

kholzob

XLDnaute Nouveau
Bonjour,

J'aurais besoin d'un coup de main pour le problème suivant.

J'ai un tableau dans lequel plusieurs information sont contenue dans la même cellule (voir exemple) et voudrais en extraire les infos.

En gris mon export.
En vert le résultat souhaité.

Marche à suivre:
- Dans cellule B3, cherche le chiffre suivant le code "#U1" et revoyer le caractère (ou les deux caractères) suivant
- Idem pour #U2 #U3 #U4
- Idem pour B4 B5 etc.

Je n'ai pas de solution, si formule, ni VBA..

Merci d'avance de votre aide.
Khol
 

Pièces jointes

  • Exemple.jpg
    Exemple.jpg
    48.5 KB · Affichages: 20

vgendron

XLDnaute Barbatruc
un essai avec ce code
VB:
Sub LargeurColonne()
Fin = Range("B" & Rows.Count).End(xlUp).Row 'on recupère la dernière ligne de la colonne B
For i = 3 To Fin 'pour chaque ligne du tableau
    s = Split(Range("B" & i), vbLf) 'on met dans un tableau les couples "output/Valeur"
    For k = LBound(s) To UBound(s) 'pour chaque couple
        'output = Split(s(k), " ")(0)
        valeur = Split(s(k), " ")(1) 'la valeur
        Cells(i, k + 3) = valeur 'et on la place dans le tableau
    Next k
Next i
End Sub
 

kholzob

XLDnaute Nouveau
Oui à la suite de U4.

Je peux adapter le code :
Code:
For k = LBound(s) To UBound(s) 'pour chaque couple
en
Code:
For k = 0 To 3 'pour chaque couple
pour me limiter au 4 premières lignes.
Mais comme toujours cela dépendra de la rigeur des utilisateurs en entrant les données de la colonne B. (si une ligne est sautée le code ne l'accepte pas et si plusieurs espace sont introduit entre Ux et la réponse un espace vide est indiqué).

J'ai une solution avec formule, plus flexible, mais qui surcharge mon fichier.
Code:
=(MID($B3;FIND(C$2;$B3)+3;2))


Merci beaucoup pour ton aide, je vais voir comment je peux encore adapter le code pour éliminer les erreur des utilisateurs).
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

Cela fonctionne sur l'exemple.
(en attendant mieux ;))
VB:
Sub a()
Dim t, i&, j&
j = Cells(Rows.Count, 2).End(xlUp).Row
For i = j To 3 Step -1
t = Split(Cells(i, 2), vbLf)
Cells(i, 3).Resize(, UBound(t) + 1) = t
Erase t
Next
Range("C3:F" & j).Replace What:="#U? ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 132
Membres
103 127
dernier inscrit
willwebdesign