Retour chariot devant chiffre

Bonjour,

Premièrement merci pour ce forum !

De mon coté j'ai un soucis concernant la mise en forme d'un fichier excel ( qui contient plus de 20 000 cellules).

Il s'agit d'une liste d'ingrédients de cuisine et mon objectif est de trouver une formule qui va mettre en forme chaque cellule selon 4 possibilités :

  • Il s'agit d'un mot simple de type " haricots" -> la mise en forme ne change pas
  • Il s'agit de deux mots longs de type " haricots rouge" -> L'espace entre les 2 mots est supprimé et il y a un retour chariot entre "haricots" et " rouge"
  • Il s'agit de deux mots courts de type " sel fin " -> la mise en forme ne change pas
  • Il y a un nombre dans la cellule de type " Sel 3OG" ou " Haricot Rouge 30G"-> Idem que les exemples précédents mais il y a obligatoirement un retour chariot entre l'ingrédient et le gramage

( voir la PJ si ce n'est pas clair)

Je ne sais pas si il existe une formule pour ma demande, je suis complètement novice en VBA,mais si quelqu'un peux m'aiguiller sur un bout de code à utiliser cela me serais d'une grande aide car je suis complètement perdu.

De plus je ne peux pas utiliser l'outil "renvoi à la ligne automatiquement" car j'utilise ce fichier excel en format .csv pour un export vers After Effect et ce dernier ne prend en compte que le retour chariot.

Merci beaucoup et désolé pour ce gros pavé de texte.

Bon weekend,

18exemple.xlsx (31.15 Ko)

Bonjour

Ta notion de mots courts est ambiguë

Quelle longueur ?

Dans ton exemple pourquoi de va à la ligne avant poulet ? Et pas Haché après Boeuf ?

On peut découper à chaque espace et gérer les G mais il est probable qu'il existe d'autres unités de poids

Il convient donc de bien tout mettre à plat sur un nombre d’exemples plus conséquent et plus variés comme l'est sans doute ta réalité...

Bonjour,

Pourquoi Excel ???

Le concept d'Excel c'est un seule donnée par cellule.

Bonjour,

Merci pour vos réponses.

Alors j'utilise Excel car mon script after effect ne fonctionne d'avec Excel.

Concernant la notion de mots courts effectivement c'est assez ambiguë. Mais généralement je considère qu'un mots est long à partir de 8 caractères.

J'ai mis un retour après "de" uniquement pour une question d'harmonie de longueur entre les lignes. Et bien sur, j'ai plusieurs unitées différentes dans mon fichier de base, ce qui complique la chose.

Est il possible d'utiliser une formule qui insére un retour chariot avant le premier chiffre d'une cellule si cette dernière en contient une ? Cela permettrait deja de séparer l'ingrédient de la contenance.

Merci énormément !

RE

Si un mot est long à partir de 8 caractères on ne devrait rien couper à part SCHTROUMPFS

Je persiste : fais une analyse plus précise car je sens qu'on part dans le grand flou et qu'on ne va pas avancer sérieusement.

Bonjour Chris,

Tu as raison.

Après réflexion je pense qu'il est plus intéressant de rester sur les conditions suivantes :

Règle 1 : La quantité est toujours à la ligne

Règle 2 : Il ne faut jamais couper un mot en 2, peu importe sa longueur

Règle 3 : Il faut ajouter un retour chariot entre deux mots lorsque le nombre de caractère qui compose la cellule est supérieur à 11, espace compris mais sans prendre en compte la quantité( exemple :

SEL FIN 20G -> retour chariot entre FIN et 20G

CAROTTE CUITE 30G -> retour chariot entre CAROTTE et CUITE ainsi que entre CUITE et 30G)

Pour des cas particulier comme BLANCS DE POULET 2 je suis bloqué. Quoi qu'il arrive le "2" doit etre à la ligne ( CF Règle 1) mais je ne sais pas comment indiquer à Excel de mettre le retour chariot entre "BLANCS" et "DE" et pas entre "DE " et "POULET".

Merci,

RE

Pourquoi cette limitation à 11 caractères : tu as une zone d'affichage réduite ?

Re,

Effectivement je suis limité en terme de t'affichage. Ce fichier Excel est directement téléversé dans une composition After Effect. Ce texte apparait en incrustation dans une pancarte tenu et animé par un personnage. J'ai intégré une fonction dans mon fichier After effect pour adapter automatiquement la taille de ma pancarte en fonction du nombre de caractère composant ma cellule dans excel. Mais si je ne met pas de retour chariot avant 11 caractères ma pancarte vient se superposer à mon personnage. Je suis donc limité en terme d'espace d'affichage d'ou ma limite de 11 caractères dans excel.

Bonjour

Une solution PowerQuery qui peut sans doute être améliorée (par Jean-Eric ? )

qui part du principe qu'on ne dépasse pas 3 mots et qu'aucun mot ne dépasse 11 caractères

bonjour,

Avec un fonction personnalisée (activer les macros) :

20cesure.zip (13.09 Ko)

Whouaw c'est parfait. C'est exactement ça. Je galère à comprendre ce que cette macro à dans le ventre mais elle fonctionne parfaitement.

Merci énormément !

Bonjour,

Le principe est relativement simple :
- On analyse chaque caractère de la chaine, si on trouve un espace :
  - On vérifie si c'est la quantité qui suit :
    - si oui, on va à la ligne et c'est terminé
    - si non, on regarde si 11 caractères sont comptabilisés, depuis le début ou l'espace précédent :
      - si oui on remplace l'espace précédent par un retour à la ligne et on mémorise le nombre de caractères depuis cet espace
      - sinon on mémorise la position de l'espace trouvé.
  - sinon (si ce n'est pas un espace) :
    - si 11 caractères sont comptabilisés :
      - si il existe un espace précédent (depuis le dernier retour à la ligne : 
        - on remplace l'espace précédent par un retour à la ligne et on mémorise le nombre de caractères depuis cet espace
Rechercher des sujets similaires à "retour chariot devant chiffre"