Microsoft 365 Extraire des valeurs de taille variable d'une chaîne de caractère

  • Initiateur de la discussion Initiateur de la discussion bigduff
  • Date de début Date de début

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 !

bigduff

XLDnaute Nouveau
Bonjour les experts,

Je sèche sur le problème suivant. Je récupère dans Excel des informations dans ce format :

GTP9;426;5;2
GTP10;0;0;0

Je souhaite pouvoir extraire automatiquement les valeurs situées entre points virgule, ainsi que la valeur la plus à droite, dans autant de colonnes distinctes.

Donc dans mon exemple : 426, 5 et 2 ou 0, 0 et 0.

Problème : le texte en début de chaîne varie entre 4 et 5 caractères (de GTP1 à GTP11), et les valeurs comprises entre points virgule entre 1 et 4 caractères (de 0 à 9999).

Ce qui rend cette problématique insoluble pour mes quelques tentatives à base de STXT, CHERCHE et TROUVE.

Je vous serai reconnaissant si vous pouviez m'apporter une aide à ce sujet.

Un grand merci d'avance.

B.
 
Bonjour à tous

Tout en image :
Données ==> Convertir==> Délimité

1636393366313.png
1636393424898.png
1636393462602.png

Donne ==>
1636393505374.png


et en vba cela donne : (Il faut juste sélectionner la zone à convertir)

VB:
Sub Convertion()
Set MaZone = ActiveCell
On Error Resume Next
Selection.TextToColumns Destination:=MaZone, DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, Semicolon:=True, FieldInfo:=Array(Array(1, 1)), TrailingMinusNumbers:=True
Set MaZone = Nothing
End Sub

*Merci de ton retour

@Phil69970
 
Bonsoir bigduff, chris, Bruno, Phil69970,

Voyez le fichier joint et les noms définis deb et fin, ce sont des matrices.

Formule en B2 à tirer à droite et vers le bas :
Code:
=STXT($A2;PETITE.VALEUR(deb;COLONNE()-1);PETITE.VALEUR(fin;COLONNE())-PETITE.VALEUR(deb;COLONNE()-1))
A+
 

Pièces jointes

Bonsoir à tous 🙂,
Bienvenue sur XLD @bigduff 🙂,

J'y vais aussi avec mes 3 formules:
  • En B1, la formule : =GAUCHE(STXT(A1;CHERCHE(";";A1)+1;99);CHERCHE(";";STXT(A1;CHERCHE(";";A1)+1;99))-1)
  • Puis en D1, la formule : =SUPPRESPACE(DROITE(SUBSTITUE(A1;";";REPT(" ";255));255))
  • Et après en C1 (C1 dépend de B1 et D1): =SUBSTITUE(STXT(A1;CHERCHE(";" & B1 & ";";A1)+2+NBCAR(B1);999);";" & D1;"")
  • Tirer/copier B1 à D1 vers le bas
nota : si vous voulez des "vrais nombres", insérez dans chacune des trois formules 1* juste après le signe =.
 

Pièces jointes

Dernière édition:
Wow, merci pour ces prompts retours.

Par rapport au premier message, c'est vrai que passer par l'import de données d'Excel fonctionne très bien. Je copie/colle la colonne dans un fichier note quelconque, j'importe, et le découpage se fait automatiquement.

Mais je vais quand même essayer toutes ces belles formules, pour le panache et la beauté du geste.

Je vous tiens au courant.
 
- 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
Retour