convertir texte - colonnes - excel

  • Initiateur de la discussion Initiateur de la discussion keesk
  • 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 !

K

keesk

Guest
bonjour,

je voudrais convertir ce texte, bien aligne sue excel
comment faire, le plus rapidement possible ?



Statement of Cash Flows
General Electric Company
and consolidated affiliates
For the years ended December 31 (In millions) 2008 2007 2006
CASH FLOWS — OPERATING ACTIVITIES
Net earnings $ 17,410 $ 22,208 $ 20,742
Loss (earnings) from discontinued operations 679 249 (1,398)
Adjustments to reconcile net earnings to cash provided from operating activities
Depreciation and amortization of property, plant and equipment 11,492 10,275 8,457
Earnings from continuing operations retained by GECS — — —
Deferred income taxes (1,284) 657 1,639
Decrease (increase) in GE current receivables (24) (868) (2,194)
Decrease (increase) in inventories (719) (1,562) (1,514)
Increase (decrease) in accounts payable (1,078) (997) (276)
Increase in GE progress collections 2,827 4,622 642
Provision for losses on GECS financing receivables 7,518 4,431 3,062
All other operating activities 11,020 927 3,352
Cash from operating activities—continuing operations 47,841 39,942 32,512
Cash from (used for) operating activities—discontinued operations 760 3,380 (1,057)
CASH FROM OPERATING ACTIVITIES 48,601 43,322 31,455
 

Pièces jointes

Re : convertir texte - colonnes - excel

Re

EDITION : Les VBA's Aminches, please, venez à ma rescousse
Venez me donner un bon vieux coup de pattern.
Car je me creuse les méninges , mais j'échoue à 75% (à la louche) , de la mission regexpienne
que je m'étais fixé pour aider keesk.
Voir la pièce jointe Regarde la pièce jointe regExpV2.xls
(il y a du progrès, mais on devrait atteindre 100% en conjuguant nos efforts. Merci 😉 )


keesk
Comme je le disais précédemment
JNP: Je vois une issue (peut-être) du côté de RegExp
(reste à trouver le bon pattern)
Le souci c'est que je n'ai pas encore trouvé 😱
 
Dernière édition:
Re : convertir texte - colonnes - excel

Bonjour 🙂,
VBACrumble : Désolé, mais ça m'a pas vraiment inspiré... J'essayerai d'y jeter un oeil, mais sans engagement 😱
Keesk : Voici le code commenté. Tu verras que j'avais fait exprès de restituer en texte, donc pas de souci pour passer en chiffres 😉
Code:
Option Explicit
Sub Nettoyage()
' Déclaration des variables, la chaîne à analyser, le résultat, 2 compteurs
' 1 flag, le caractère extrait et un tableau pour pouvoir spliter la chaîne
Dim AAnalyser As String, Résultat As String, I As Integer, J As Integer
Dim Drapeau As Boolean, Caractère As String, Tableau
' Je met le flag en faux
Drapeau = False
' Boucle sur toutes les cellules de la première colonne
For I = 1 To Range("A65536").End(xlUp).Row
' Stockage du texte à analyser
AAnalyser = Cells(I, 1)
' Suppression des blancs avant les $
AAnalyser = Replace(AAnalyser, "$ ", "$")
' Boucle sur tous les caractères de la chaîne en partant de la fin
' Resultat va être complétée de droite à gauche
For J = Len(AAnalyser) To 1 Step -1
' Extrait le caractère
Caractère = Mid(AAnalyser, J, 1)
' Teste en fonction du cas de figure
Select Case Caractère
' $ : j'ajoute une livre devant le $ et je passe le flag à faux
' car il a du passer à vrai sur les chiffres avant
Case "$"
Résultat = "£$" & Résultat
Drapeau = False
' ( : si c'est bien des chiffres qu'il y avait avant la (, j'ajoute £
' et je repasse le flag à faux, sinon, je me contente de garder (
Case "("
If Drapeau = True Then
Résultat = "£(" & Résultat
Drapeau = False
Else
Résultat = "(" & Résultat
End If
' Si c'est un chiffre, je pass le flag à vrai et j'ajoute le caractère
Case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
Drapeau = True
Résultat = Caractère & Résultat
' Si c'est un espace et que le flag est vrai, je rajoute une £
Case " "
If Drapeau = True Then
Résultat = "£" & Résultat
Drapeau = False
Else
Résultat = " " & Résultat
End If
Case Else
Résultat = Caractère & Résultat
End Select
' Fin de la boucle sur la chaîne
Next J
' Renvoi du résultat dans la cellule
Cells(I, 1) = Résultat
' Réinitialisation du résultat
Résultat = ""
' Fin de la boucle sur les cellules
Next I
' Deuxième boucle sur les cellules pour diviser le résultat en largeur
For I = 1 To Range("A65536").End(xlUp).Row
' Je recharge la chaîne
AAnalyser = Cells(I, 1)
' Si j'ai £ dans ma chaîne
If AAnalyser Like "*£*" Then
' Je splite la chaîne au niveau des £
Tableau = Split(AAnalyser, "£")
' Boucle pour récupérer les valeurs du tableau
For J = 1 To UBound(Tableau) + 1
[COLOR=blue]' Dépot de chaque valeur du tableau dans les cellules[/COLOR]
[COLOR=blue]' J'avais fait exprès d'ajouter ' pour faire du format texte[/COLOR]
[COLOR=blue]' afin de respecter la présentation de départ avec les paranthèses[/COLOR]
[COLOR=blue]' Il suffit de l'ôter pour récupérer du format nombre[/COLOR]
[COLOR=blue]' Mais attention à la traduction $ -> €[/COLOR]
Cells(I, J) = [COLOR=blue]"'" &[/COLOR] Tableau(J - 1)
' Fin des boucles et de la sub
Next J
End If
Next I
End Sub
Pour le problème du 31, je pense qu'on pourrait passer par un deuxième flag qui réagirait dès que Caractère ne serait ni 0 1 2 3 4 5 6 7 8 9 , ( ) " ", et qui arrêterait de mettre des £.
Bonne journée 😎
 
Re : convertir texte - colonnes - excel

Bonjour,

NBCAR(A7)-NBCAR(SUBSTITUE(A7;" ";""))-2)

Cet extrait de formule renvoie la position (4ème argument de la fonction SUBSTITUE) de l'antépénultième (avant-avant-dernier) espace de la chaîne de caractères en A7.

Le nombre de caractères de A7 - le nombre de caractères de A7 duquel les espaces ont été supprimés renvoie le nombre d'espaces de la chaîne de caractères,.
La position de l'antépénultième espace est ce nombre -2, pour l'avant-dernier ce serait -1.

J'espère avoir été clair.
 
Dernière édition:
Re : convertir texte - colonnes - excel

Bonjour,
Je suis comme vous .....j'aime bien quand ca tourne rond.
Pour Keesk, voila un nouveau fichier ou les col BCD sont numérique
Les $ sont pris en compte et mis au bon format.
Pour les paranthéses ex: (24) si l'on rentre cela direct dans une cellule cela donne -24
donc je n'ai rien prévu sinon que faire????.
J'ai mis des explications en macro
Bruno
 

Pièces jointes

Re : convertir texte - colonnes - excel

Bonjour vbacrumble,
C'est avec plaisir que j'aimerai te donner un coup de pouce mais là j'avoue être largué
bien comme il faut.
J'essai seulement deja de comprendre le principe de la formule et.....et c'est pas limpide.!!!
a+
 
Re : convertir texte - colonnes - excel

Re 🙂,
Comme Youki(BJ), je suis un peu perfectionniste, donc voici la macro qui ne tient pas compte du 31, qui reformate en $ si affinité, et qui supprime les parenthèses pour éviter les -...
Code:
Sub Nettoyage()
' Déclaration des variables, la chaîne à analyser, le résultat, 2 compteurs
' 1 flag, le caractère extrait et un tableau pour pouvoir spliter la chaîne
Dim AAnalyser As String, Résultat As String, I As Integer, J As Integer
Dim Drapeau As Boolean, Caractère As String, Tableau, Drapeau2 As Boolean
' Je met le flag en faux
Drapeau = False
' Boucle sur toutes les cellules de la première colonne
For I = 1 To Range("A65536").End(xlUp).Row
' Stockage du texte à analyser
AAnalyser = Cells(I, 1)
' Suppression des blancs avant les $
AAnalyser = Replace(AAnalyser, "$ ", "$")
' Passage du drapeau2 à faux
Drapeau2 = False
' Boucle sur tous les caractères de la chaîne en partant de la fin
' Resultat va être complétée de droite à gauche
For J = Len(AAnalyser) To 1 Step -1
' Extrait le caractère
Caractère = Mid(AAnalyser, J, 1)
' Pour éviter le 31 décembre, je modifie le drapeau2 si j'ai des caractères
Select Case Caractère
Case " ", "(", ")", ",", ".", "$", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
Case Else
Drapeau2 = True
End Select
' Teste en fonction du cas de figure
Select Case Caractère
' $ : j'ajoute une livre devant le $ et je passe le flag à faux
' car il a du passer à vrai sur les chiffres avant
Case "$"
Résultat = "£$" & Résultat
Drapeau = False
' ( : si c'est bien des chiffres qu'il y avait avant la (, j'ajoute £
' et je repasse le flag à faux, sinon, je me contente de garder (
Case "("
If Drapeau = True And Drapeau2 = False Then
Résultat = "£(" & Résultat
Drapeau = False
Else
Résultat = "(" & Résultat
End If
' Si c'est un chiffre, je pass le flag à vrai et j'ajoute le caractère
Case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
Drapeau = True
Résultat = Caractère & Résultat
' Si c'est un espace et que le flag est vrai, je rajoute une £
Case " "
If Drapeau = True And Drapeau2 = False Then
Résultat = "£" & Résultat
Drapeau = False
Else
Résultat = " " & Résultat
End If
Case Else
Résultat = Caractère & Résultat
End Select
' Fin de la boucle sur la chaîne
Next J
' Renvoi du résultat dans la cellule
Cells(I, 1) = Résultat
' Réinitialisation du résultat
Résultat = ""
' Fin de la boucle sur les cellules
Next I
' Deuxième boucle sur les cellules pour diviser le résultat en largeur
For I = 1 To Range("A65536").End(xlUp).Row
' Je recharge la chaîne
AAnalyser = Cells(I, 1)
' Si j'ai £ dans ma chaîne
If AAnalyser Like "*£*" Then
' Je splite la chaîne au niveau des £
Tableau = Split(AAnalyser, "£")
' Boucle pour récupérer les valeurs du tableau
For J = 1 To UBound(Tableau) + 1
' Dépot de chaque valeur du tableau dans les cellules
' Mise au format $ si $ dans le tableau
If Tableau(J - 1) Like "*$*" Then
    Cells(I, J).NumberFormat = _
        "_-[$$-409]* #,##0_ ;_-[$$-409]* -#,##0 ;_-[$$-409]* ""-""??_ ;_-@_ "
End If
' Suppression des parenthèses pour éviter les -
Cells(I, J) = Replace(Replace(Tableau(J - 1), "(", ""), ")", "")
' Fin des boucles et de la sub
Next J
End If
Next I
End Sub
Bonne soirée 😎
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour