Décaler des valeurs en fonction d'une entrée

Raka

XLDnaute Occasionnel
Bonsoir !

Dans ma quête de compréhension de la profondeur d'excel, je bute sur une chose que j'essaye de faire.

Tout part d'un json parsé, sous la forme d'une série de 4 à 8 chiffres séparés par des virgules.

1595353198764.png


Je colle ça dans une case unique, ça me colle le tout dans une colonne.
Jusque là, pas de souci.

Normalement, ici, je suis censé convertir pour séparer les chiffres en fonction des virgules, en différentes colonnes.
Seulement, si ça colle avec les 4 premières colonnes, les 4 suivantes sont un peu plus délicates.

Elles sont soit vides, soit partiellement remplies, ou totalement remplies, selon la présence des chiffres de 0 à 4 (les quatre dernières colonnes ne contiennent que ça).

Ce que j'aimerais obtenir, c'est ceci :

La conversion des quatre premières colonnes de façon normale (comme avec le bouton convertir) et pour les quatre suivantes, si le 0 est présent, le mettre colonne 5, si le 1 est présent, le mettre colonne 6, pareil avec le 2 et le 3 colonnes 7 et 8. Et laisser les autres colonnes vides.

Un exemple concret : (qui ne correspond pas tout à fait à l'image d'au-dessus, je l'ai modifiée manuellement pour donner un exemple parlant).

1595353631396.png


Sans VBA, est-ce faisable ?

Merci :D
 

Pièces jointes

  • 1595353595283.png
    1595353595283.png
    435.7 KB · Affichages: 27
  • 1595353607542.png
    1595353607542.png
    13.5 KB · Affichages: 20

Raka

XLDnaute Occasionnel
Bonsoir Raka,

Présent où ??? Vos exemples ne permettent pas de le comprendre.

A+
Sur la liste que j'ai mise en première image, il y a des séries de chiffres.

Il y a toujoursentre 4 et 8 chiffres séparés par des virgules.

Les 4 premiers chiffres vont dans les 4 premières colonnes, toujours.
Les (entre 0 et 4) derniers chiffres vont dans les 4 dernières colonnes. Ces chiffres sont toujours 0, 1, 2, ou 3, ou un assemblage des quatres. Et il ne peut y avoir qu'une occurrence de chacun d'eux. Il n'y aura pas deux 0 ou deux 1 dans les 4 éventuels derniers chiffres.

Un exemple concret :
je vais avoir X,Y,Z,W,0,1,2,3 (la plus longue série possible)
puis A,B,C,D,0,2
puis E,F,G,H,1,2,3
Puis J,K,L,M sans chiffres derrière (la plus courte série possible)

Dans le tableau, j'aimerais que les chiffres que je viens de représenter par des lettres aillent dans les 4 premières colonnes du tableau, et les 0,1,2,3 dans les 4 dernières. Lorsqu'il y a un 0, colonne 5, lorsqu'il y a 1, colonne 6, lorsqu'il y a 2, colonne 7, lorsqu'il y a un 3, colonne 8.

Comme illustré sur la deuxième image.

possible ?

Ou dans le pire des cas, ce qui irait également, en plus des 4 premières colonnes obligatoires, c'est simplement de remplir les cellules concernant les chiffres 0 1 2 et 3 par n'importe quoi à condition qu'il y ait ces 0,1,2 ou 3 à partir du 5ème chiffre de la série. Si je suis assez clair.
 
Dernière édition:

Raka

XLDnaute Occasionnel
Ceci :


7,5971,0,2,0,1,3
71,2053,9,1,0,1,3
93,1975,12,1,0,1,3
11,248,12,1,0,1
82,2407,9,1,0,1,3
12,473,11,1,0,1
6,544,10,1,0,1
13,4225,9,1,0,1
127,49,4,0,0,3
22,8,2,1,0,1
185,484,10,1,0
229,26,4,0,1
326,86,6,1,0,1,3
260,436,10,0,
258,29,4,0,
23,78,5,0,0
327,166,8,1,0,1
325,9,4,0,0,1
259,116,4,0,
80,253,11,1,0,1
21,7,3,0,0,1
107,85,6,1,0,1
189,13,3,0,0,2

Doit donner cela :

1595357884780.png


Ou au moins remplir les cases, si ce n'est avec des 0 1 2 3, avec n'importe quoi qui signale que dans la liste, sur chaque ligne, il y avait ou non ces 0 1 2 3 entre le 5ème et 8ème chiffre.
Par exemple, ceci fonctionnerait aussi :

1595358103217.png


Je ne sais pas si je pourrai être plus clair, cette fois :D
 

Pièces jointes

  • 1595357815118.png
    1595357815118.png
    28.5 KB · Affichages: 19

Raka

XLDnaute Occasionnel
Du coup je fais face à un autre souci, là. Etrange parce que ça ne m'était pas encore arrivé.
Quand je colle ma série de chiffres (parsée puis éditée avec notepad++ si ça change quelque chose), je me retrouve à coller directement les valeurs dans le tableau entier plutôt que tout dans une seule colonne, même si je ne colle que sur la première cellule.
Donc ça ne m'arrange plus vraiment :D
Comment faire pour empêcher les valeurs de s'auto-convertir en colonnes ?


Bon, il semble que je puisse cliquer sur le petit Ctrl en bas à gauche de ce que je colle... Mais c'est étrange, ça ne me le faisait pas avant, les options du "convertir" ont changé par défaut.
Bref, pas grave et merci encore !
 
Dernière édition:

job75

XLDnaute Barbatruc
Ah mais si, j'ai trouvé la solution sans VBA voyez le fichier joint :

1) en colonne A entrez les données sources

2) appliquez la commande Convertir (séparateur virgule) avec restitution sur les 8 colonnes B à I vides

3) formule en J2 à tirer sur J2:M2 et vers le bas :
Code:
=SI(ESTNUM(TROUVE(COLONNES($J2:J2)-1;$F2&$G2&$H2&$I2));COLONNES($J2:J2)-1;"")
4) copier/collage spécial-Valeurs des 4 colonnes J:M sur elles-mêmes pour supprimer les formules

5) supprimez les 4 colonnes F à I (en jaune).

Maintenant vous pourrez indiquer que ce fil est Résolu.

Bonsoir Denis132.
 

Pièces jointes

  • Classeur(1).xlsx
    10.5 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
312 273
Messages
2 086 695
Membres
103 372
dernier inscrit
BibiCh