decoupe de chiffres

G

GARNIER

Guest
Bonjour et encore merci au personne qui vont me repondre

Si en A1 j'ai par exemple :

1000 500 10 20

Chaque chiffres étant séparés par un espace comment obtenir en B1 "1000" en C1 "500" en D1 "10" et bien sur en E1 "20"

Les chiffres étant a chaque fois differents...

Merci.
 
A

andré

Guest
Salut,

Essaie ceci après avoir sélectionné ta cellule :
Menu Données / Convertir / Délimité / espaces

Si ce n'est pas cela, fais signe, il y a d'autres méthodes, mais tu devrais préciser s'il y a toujours 3 espaces.

Ândré.
 
A

andré

Guest
Resalut,

Eh bien, c'est simple, copie ta série de nombres en B1 et suis la procédure que je t'ai indiquée, tu auras ta décomposition en C1, D1, ... puis efface la cellule B1.

Tu peux enregistrer cela sous une macro.

Ândré.
 
G

GARNIER

Guest
il faudrait que se soit une formule
pour ne pas faire d'action copier/coller

pour ce qui est des macros, je ne connait pas du tout....

la question a ce poser c'est:

1000 500 10 20

"prend chaque chiffres avant l'espace" si je peu dire....
 
A

andré

Guest
Bonsoir,

Ce ne sera pas une formule, mais bien quatre.

Je te fais cela demain matin au saut du lit, maintenant la cloche a sonné, il est temps de se mettre à table !

Confirme moi quand même si ce sont toujours quatre nombres, ou s'il peut y en avoir 3 ou 5, ...

Bonne soirée.
Ândré.
 
G

GARNIER

Guest
en fin de compte je te donne le fichier ou j'essaye de realiser en automatique le remplissage des case C13,D13,E13,F13,G13,H13

J'arrive juste a calculé le poid en I13 (pas trop dur) :)

J'arrive aussi a decomposé la case B13 pour obtenir

1000 500 12 30

Mais ce que j'aimerais c'est remplir la case B13 et que les autres (C13,D13,E13,F13,G13,H13) ce remplissent automatiquement grace a la dénomination qui detient toutes les données pour les remplir.

Le petit probleme supplementaire c'est qu'il peu y avoir une dénomination comme en B17

Et bien sur un WPG de 1000 est un exemple il peu y en avoir de plusieurs dimension

c'est pour cela que j'aimerais decompose la "suite de chiffres" sans tenir compte de sa position ni de sa longueur

Merci encore...

Et peut-etre a demain
 

Pièces jointes

  • WPG.zip
    5.9 KB · Affichages: 30
A

andré

Guest
Salut, ... avec un peu de retard, mais avec un résultat!

La valeur (série de nombres séparés par un espace) en A1.

En B1 : =SI($A1="";0;SI(NBCAR($A1)-NBCAR(SUBSTITUE($A1;" ";""))=0;$A1;GAUCHE($A1;TROUVE(" ";A1;2))))*1

En C1 : =SI(NBCAR($A1)-NBCAR(SUBSTITUE($A1;" ";""))<COLONNE()-2;0;STXT($A1;TROUVE("µ";SUBSTITUE($A1&" ";" ";"µ";COLONNE()-2);1)+1;TROUVE("µ";SUBSTITUE($A1&" ";" ";"µ";COLONNE()-1);1)-TROUVE("µ";SUBSTITUE($A1;" ";"µ";COLONNE()-2);1)-1))*1
formule à copier vers la droite.
Puis les deux formules peuvent être copiées vers le bas.

Trois remarques :

Il faut désactiver les "Valeurs zéros" sous le menu Outils/ Options / Affichage si l'on ne veut pas se voir afficher les 0 (j'ai essayé de remplacer les 0 par des "" dans les formules, mais cela ne marche pas, et je ne sais pas pourquoi !)

Si les formules renvoient des messages d'erreurs, il y a lieu de vérifier si les espaces sont bien des CAR(32).
Il se peut en effet que si les séries de nombres sont importés d'un autre programme que se soit le CAR(160), que l'on peut reproduire par Alt+0160.

S'il y a un espace après le dernier chiffre, il y a aussi un message d'erreur (que je n'ai pas essayé de supprimer ... on ne peut pas tout avoir !)


Maintenant il ne me reste plus qu'à concatener les deux formules de sorte qu'elle (la nouvelle) soit valable pour toutes les cellules, mais ça ce n'est plus pour aujourd'hui.

Dis-moi si cela te convient.
En attendant, bonne soirée.

Ândré.
 
A

andré

Guest
Resalut,

Plus vite fait que je n'avais estimé !

Pour une série de nombres en A1, une seule formule en B1 qui peut être étirée vers la droite et vers le bas :

=SI(COLONNE()=2;SI($A1="";0;SI(NBCAR($A1)-NBCAR(SUBSTITUE($A1;" ";""))=0;$A1;GAUCHE($A1;TROUVE(" ";A1;2))))*1;SI(NBCAR($A1)-NBCAR(SUBSTITUE($A1;" ";""))<COLONNE()-2;0;STXT($A1;TROUVE("µ";SUBSTITUE($A1&" ";" ";"µ";COLONNE()-2);1)+1;TROUVE("µ";SUBSTITUE($A1&" ";" ";"µ";COLONNE()-1);1)-TROUVE("µ";SUBSTITUE($A1;" ";"µ";COLONNE()-2);1)-1))*1)

J'avais oublié de signaler que le nombre de nombres en A2 peut varier de 0 à l'infini, les seules limetes étant le nombre de caractères dans la cellule A2 et le nombres de colonnes sur une feuille.

Si quelqu'un peut simplifier cette formule, je suis toujours preneur.

Ândré.
 
G

GARNIER

Guest
Merci André....

Ce n'est surement pas moi qui pourra simplifier cette formule

elle marche nickel

pour l'instant je vais essayer de la comprendre......


Je te remercie pour ton aide

Et je ferais peut-etre encore appel a tes service

mais apres mes vacances....

A+
 
A

andré

Guest
Heureux qu'elle marche chez toi aussi.

Toujours à ta disposition pour te donner un mot d'explication.

Tout ce qui est compliqué n'est pas nécessairement difficile, et tout ce qui est difficile n'est pas nécessairement compliqué.

Sur ces bons mots, je te souhaite de bonnes vacances reposantes.

Ândré.
 
P

PhiBou

Guest
Bonjour Garnier, André

Ou pour alléger la formule :

Faire Insertion Nom Définir :

Dans nom de classeur mettre Garnier et dans fait référence à :

=SUBSTITUE(SUBSTITUE(" " & $A1& " ";" ";"A";COLONNE()-1);" ";"B";COLONNE()-1)

Puis dans la cellule B1 :

=STXT(Garnier;TROUVE("A";Garnier)+1;TROUVE("B";Garnier)-TROUVE("A";Garnier)-1)

Recopie incrémentée bas et gauche

Bon Dimanche

PhiBou
 
A

andré

Guest
Salut Phibou,

Merci pour le conseil, mais c'était déjà fait.
A la limite on peut nommer toute la formule, dès lors il suffit de taper une ou deux lettres dans la cellule pour obtenir le résultat.

Mais j'avais bien dit "simplifier" et non "alléger" ou "condenser".
Par là j'entendais une autre approche du problème, un autre cheminement dans le raisonnement afin d'obtenir le même résultat.

Il faut dire que je ne suis déjà pas mécontent d'avoir écrit une formule unique valable pour toutes les cellules, quelque soit la longueur de la chaîne à "déconcatener".

Je signale au passage que cette formule est égalment valable pour du texte, tant qu'on efface les deux "*1".
Pour rappel, les fonctions GAUCHE(), DROITE() et STXT() renvoient toujours du texte.

Bon dimanche.
Ândré.
 

Discussions similaires

Réponses
5
Affichages
403

Statistiques des forums

Discussions
313 009
Messages
2 094 365
Membres
106 005
dernier inscrit
Gabe68