Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Bonjour à vous.
Je viens chercher de l'aide car je ne m'en sors pas
Dans une cellule j'ai des informations issues d'extraction.
C'est du genre, au maxi sur 4 lignes, a priori avec des retours lignes
:
"Non renseigné
F1602 - Électricité bâtiment
N4101 - Conduite de transport de marchandises sur longue distance
N4105 - Conduite et livraison par tournées sur courte distance"
ou
"G1602 - Personnel de cuisine
F1602 - Électricité bâtiment
N4101 - Conduite de transport de marchandises sur longue distance
N4105 - Conduite et livraison par tournées sur courte distance"
Selon le contenu je veux répartir la donnée en 4 cellules...
Ce qui pourrait donner avec 1 ligne renseignée :
Nonrenseigné
ou
G1602 - Personnel de cuisine
Ce qui pourrait donner avec 2 lignes renseignées :
Nonrenseigné
F1602 - Électricité bâtiment
ou
G1602 - Personnel de cuisine
F1602 - Électricité bâtiment
Ce qui pourrait donner avec 3 lignes renseignées :
Nonrenseigné
F1602 - Électricité bâtiment
N4101 - Conduite de transport de marchandises sur longue distance
ou
G1602 - Personnel de cuisine
F1602 - Électricité bâtiment
N4101 - Conduite de transport de marchandises sur longue distance
Ce qui pourrait donner avec 4 lignes renseignées :
Nonrenseigné
F1602 - Électricité bâtiment
N4101 - Conduite de transport de marchandises sur longue distance
N4105 - Conduite et livraison par tournées sur courte distance
ou
G1602 - Personnel de cuisine
F1602 - Électricité bâtiment
N4101 - Conduite de transport de marchandises sur longue distance
N4105 - Conduite et livraison par tournées sur courte distance
Mon tableau d'origine est assez grand, je cherche la formule idéale, et peut-être serait-il possible d'en faire une fonction ?
Grand merci pour le temps que vous pourrez passer sur mon cas
Fonction perso :
La syntaxe est =Separe(Chaine,N°) , par ex :
=separe($B7;2) va prendre la chaine B7 et en extraire l'item N°2 soit "J1202 - Pharmacie"
Le code est :
VB:
Function Separe(C$, N%)
Tablo = Split(C, Chr(10))
If N <= 1 + UBound(Tablo) Then
Separe = Tablo(N - 1)
End If
If Separe = 0 Then Separe = ""
End Function
On récupère la chaine à traiter C$, les sauts de ligne dans les cellules est le caractère ASCII 10.
Donc on sépare cette chaine avec le Split. Par ex pour B11 on obtient le tableau suivant : Regarde la pièce jointe 1155133
ensuite il suffit de lire l'item demandé, et de le remonter avec : Separe = Tablo(N - 1)
Si le Tablo ne contenait rien alors il remonte 0, d'où la ligne If Separe = 0 Then Separe = "" .
( pour les fonctions perso, un petit tuto si ça vous interesse : LIEN
Macro : ( d'ailleurs en commentant, j'ai vu qu'il restait un résidu inutile, d'où cette nouvelle PJ )
Code:
Sub Découpe()
Dim DL%, C%, L%, Tablo
Application.ScreenUpdating = False ' Fige l'écran
DL = Range("B65500").End(xlUp).Row ' Recherche de la dernière ligne utilisée
For L = 7 To DL ' De la ligne 7 à la fin
Tablo = Split(Cells(L, 2), Chr(10)) ' On sépare la chaine avec les reours à la ligne
For C = 0 To UBound(Tablo) ' Pour tous les éléments du tableau ( Ubound donne la taille )
Cells(L, C + 3) = Tablo(C) ' On écrit l'item désiré
Next C
Next L
[A1].Select ' On sélectionne A1, par pure esthètique.
End Sub
Je vais lire et essayer de comprendre...
Merci beaucoup.
Est-ce que ce serait compliqué de créer une formule spécifique dans chaque cellule (des 4 colonnes) plutôt que passer par une fonction ?
En fait je prépare à la maison, et en y réfléchissant de plus près, j'ai peur que les macros soient bloqués au boulot avec 365 en cloud 😖
Bah oui je comprend bien votre étonnement...
S'il n'y avait que moi, je foncerais avec le VBA évidemment !
Mais si quelqu'un s'y connait avec Excel web...
En tous cas grand merci !!!
1) Prenez le fichier du post #4 et en C7 entrez la formule =SUBSTITUE(B7;CAR(10):"µ")
- tirez-la sur C7:C11
- sélectionnez C7:C11, clic droit => Copier, clic droit => Collage spécial => Valeurs
C'est l'état où se trouve le fichier joint.
2) Ensuite C7:C11 étant sélectionnée, menu Données, commande Convertir
- Délimité
- séparateur => Autre => µ => Suivant => Terminer.
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD