Excel : remplir 2 col à partir d'1
Marc58130
-
mic13710 Messages postés 1165 Date d'inscription Statut Membre Dernière intervention -
mic13710 Messages postés 1165 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voilà, je ne suis pas un expert en Excel... Cependant je suis face à un problème un peu trop complexe à mon sens :
J'ai une colonne où chaque cellule comporte plusieurs données (2 types)
--> TypeA;TypeB;TypeA;TypeB;TypeB...
Chaque type de donnée est séparé par un point virgule.
On différencie le TypeA du TypeB par la première lettre du typeB (R dans mon cas).
Et au final, j'aimerais avoir 2 colonnes : TypeA et TypeB !!!!
Je suis complètement bloqué et j'ai vraiment besoin que quelqu'un m'explique la démarche...
Merci d'avance à vous tous !!!!
Voilà, je ne suis pas un expert en Excel... Cependant je suis face à un problème un peu trop complexe à mon sens :
J'ai une colonne où chaque cellule comporte plusieurs données (2 types)
--> TypeA;TypeB;TypeA;TypeB;TypeB...
Chaque type de donnée est séparé par un point virgule.
On différencie le TypeA du TypeB par la première lettre du typeB (R dans mon cas).
Et au final, j'aimerais avoir 2 colonnes : TypeA et TypeB !!!!
Je suis complètement bloqué et j'ai vraiment besoin que quelqu'un m'explique la démarche...
Merci d'avance à vous tous !!!!
6 réponses
-
Une question :
Vous dites dans chaque cellule vous avez TypeA;TypeB;TypeA;TypeB;TypeB...
Si je comprends bien, vous avez sur la même ligne plusieurs données TypeA et plusieurs données TypeB que vous souhaitez séparer pour les mettre en colonnes, une pour les TypeA et l'autre pour les TypeB
Et vous avez ce type de données sur plusieurs lignes.
Est-ce bien cela ?
Michel -
Oui c'est exatement ça !!!
Exemple :
TypeA1;TypeA2;TypeB1;TypeA3;TypeB2;
ColonneTypeA -->TypeA1;TypeA2;TypeA3
ColonneTypeB -->TypeB1;TypeB2 -
Et qu'est ce qui différencie les typeA des typeB ?
-
-
Non, ils ne sont pas ordonnées de la même manière.
En fait chaque ligne correspond à un produit et le fichier Excel présente 2 types de données dans la même cellule. Et donc comme ce fichier doit être mis en base de donnée, se serait plus lisible si les données de type A et B soient dans 2 colonnes différentes.
Exemple pour un produit :
Tshirt 1 : S;M;R32;R26;L;XL
Donc les tailles du tshirt ne doivent pas se confondre avec les données commençant par un "R" -
-
-
Ca fait 3 critères tout ça !
Produit, TypeA et TypeB
C'est effectivement assez complexe dans la mesure ou il n'y a pas de cohérence dans les données.
Je ne vois guère de solution autre qu'une macro pour extraire les données car pour chaque article il faut insérer le nombre de lignes nécessaires en fonction des données présentes.
Par exemple les produits 1 et 2 ci-dessus, un produit 3 : S;R65;M;R26;R32;L;R44;XL;R45
et un produit4 : S;R36;M
donneraient les résultats suivant :
Produit1 et Produit2 : 4 lignes
Produit3 : 5 lignes à cause des données en R
Produit2 : 2 lignes seulement
-
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Voila un exemple de macro qui devrait résoudre votre problème.
http://www.cijoint.fr/cjlink.php?file=cj201104/cij0E0Bc6i.xls
Je ne doute pas qu'il y ait plus simple, mais bon ça marche.
J'ai considéré que vous aviez vos données sur 2 colonnes, la première avec le nom du produit, la deuxième avec les données.
Une fois votre classement effectué, vous pouvez supprimer la colonne B qui n'est plus utile. J'aurais pu le faire en macro mais comme ça vous pouvez vérifier que toutes vos données ont été traitées avant d'effectuer manuellement la suppression.
A demain,
Michel -
Bonjour !
Bon je viens de tester et c'est super !
Maintenant, à mon tour de comprendre comment ce script marche car mes données de type A et B doivent être dans la même cellule et non les unes en dessous des autres...
Merci beaucoup pour l'aide !!!!!!-
Ce n'est pas la même chose!
Si vous dites que vous voulez les données en colonnes, l'interprétation décrite dans mon message #10 en fonction des infos tirés au forceps et ce que j'ai traduit en code dans l'exemple que je vous ai envoyé collent à votre demande.
Il aurait fallu dire dès le départ que pour chaque ligne vous vouliez regrouper les données de Type A dans une cellule et les données de Type B dans une autre. Du point de vue code, c'était nettement plus simple.
Voila le code a copier et coller à la place de celui de l'exemple ci-dessus :
Dim Liste As String Dim Extra As String Dim Lig As Byte Dim Lig1 As String Dim Lig2 As String Dim Pos As Byte Sub Sep() Lig = 1 Lig1 = "" Lig2 = "" Liste = "a" Do Until Len(Liste) = 0 Liste = Cells(Lig, 2) Pos = 1 Do Until Pos > Len(Liste) If InStr(Pos, Liste, ";") > 0 Then Extra = Mid(Liste, Pos, InStr(Pos, Liste, ";") - Pos) Else Extra = Mid(Liste, Pos) End If If Left(Extra, 1) = "R" Then If Lig2 = "" Then Lig2 = Extra Else Lig2 = Lig2 & ";" & Extra End If Else If Lig1 = "" Then Lig1 = Extra Else Lig1 = Lig1 & ";" & Extra End If End If Pos = Pos + Len(Extra) + 1 Loop Cells(Lig, 3) = Lig1 Cells(Lig, 4) = Lig2 Lig = Lig + 1 Lig1 = "" Lig2 = "" Loop End Sub
Michel -
-
-