Identifier le caractère spécial de ma cellule

Bonjour,

Je souhaite isoler l'échelle d'une cellule afin de savoir si c'est des pièces, paquets ou des litres par exemple. L'extraction de mes données ne me permet pas d'ajouter une colonne qui spécifie si c'est des KG, Litres, Pièces ou autres. En revanche, elle incrémente directement l'unité dans la cellule en cellule spécifique. J'aimerai savoir si il est possible d'isoler le "caractère spécifique d'une cellule" pour me dire si c'est du KG, des pièces, du litre etc.

Ci-joint un fichier exemple.

image
19classeur1.xlsx (28.51 Ko)

Bonjour,

Comment vous voulez l'isoler sans rajouter de colonne ?

Ou alors je ne comprends pas bien votre terme isoler

Si j'aimerai ajouter une colonne avec uniquement l'unité dedans pour les identifier plus rapidement

D'accord en gros vous voulez récupérer l'unité du format personnalisé et le mettre dans une nouvelle colonne à coté ?. Vos données sortent directement de la base avec ce format de cellule ?

Cela me parait surprenant.

Cui c'est exactement ça

Oui cela sort comme ça

Je suis presque sure que c impossible en excel et qu'il faut passer en VBA. Cela t'irais ?

Ma préférence va plus pour une formule Excel mais si tu ne peux pas faire autrement je prends quand même

Dans ce cas : Via fonctions personalisé se trouvant dans le module.

Il te suffit de mettre =SufixFormat(cellule)

a Noter que ce n'est pas de moi

14classeur1-5.xlsm (34.37 Ko)

https://www.excel-downloads.com/threads/recuperer-le-format-dune-cellule.20008921/

bonjour

j'ai essayé par formule ça renvoie 43 et en changeant BT par ..... c'est le gros binz

16mjem.xlsx (28.12 Ko)

C'est étonnant parce que dans le fichier que tu m'as joins cela fonctionne ; en revanche si je mets la formule dans mon fichier d'origine cela ne fonctionne pas.

C'est à mettre dans une macro ? ou dans une cellule simple ?

Dans le lien que tu as mis ils parlent de macro avec ce code :

Function SufixFormat(Cel As Range)
 On Error GoTo Erreur
 SufixFormat = Trim(Split(Cel.NumberFormat, """")(1))
 Exit Function
Erreur:
 SufixFormat = ""
End Function

Mais je ne vois pas de colonne de référence où il faut que la macro agisse...

Oui il y a une fonction personalisé dans le module. Fait Alt +F11 pour ouvrir le VBA

Il faut que tu copie dans ton fichier le module et son contenue. Et aussi que ton fichier soit enregistrer en xlsm

La macro que j'ai mis ne créer pas de colonnes. Elle te permet juste d'avoir accès à la fonction SufixFormat

Je ne suis pas experte en VBA. Je pars d'un enregistrement fictif d'une macro pour ensuite mettre le code. La macro existe dans un module à gauche dans VBA

Sub Macro1()
Function SufixFormat(Cel As Range)
 On Error GoTo Erreur
 SufixFormat = Trim(Split(Cel.NumberFormat, """")(1))
 Exit Function
Erreur:
 SufixFormat = ""
End Function

bon autant dire que cela ne fonctionne pas, mais je ne comprends pas ce que c'est écrit.... comment fait-on alors ? pour isoler l'unité ?

Bon on va y aller par étapes :
La Function ne doit pas être dans une Sub.
Etape : Ouvre l'éditeur VBA avec ALT +F11
- Onglet "Insertion" = > " Module
- Colle Ce code et Uniquement ce code
Function SufixFormat(Cel As Range)
 SufixFormat = Trim(Split(Cel.NumberFormat, """")(1))
End Function

- Tu peux maintenant utiliser la fonction en faisant dans les cellules : = SufixFormat(Tacellule)

- Enregistrer le classeur en xlsm pour conserver la macro

Je n'ai pas de macro dans le fichier que tu m'as renvoyé ...

9classeur1-5.xlsm (37.33 Ko)

C'est étonnant parce que dans le fichier que tu m'as joins cela fonctionne ; en revanche si je mets la formule dans mon fichier d'origine cela ne fonctionne pas.

C'est à mettre dans une macro ? ou dans une cellule simple ?

Dans le lien que tu as mis ils parlent de macro avec ce code :

Function SufixFormat(Cel As Range)
 On Error GoTo Erreur
 SufixFormat = Trim(Split(Cel.NumberFormat, """")(1))
 Exit Function
Erreur:
 SufixFormat = ""
End Function

Mais je ne vois pas de colonne de référence où il faut que la macro agisse...

alors

1)tu ouvre l'éditeur VBA touche ALT + F11

2) insersion >> module

3) tu copie / colle le code

4) tu retournes sur ta feuille et tu fais comme une fonction ordinaire

soit tu saisis = Sufixformat , soit tu vas la chercher dans le paquet de fonctions dispo

car rien que fait de l'avoir mis dans un module ,elle se stocke et elle s'utilise comme n'importe quelle fonction

Bon on va y aller par étapes :
La Function ne doit pas être dans une Sub.
Etape : Ouvre l'éditeur VBA avec ALT +F11
- Onglet "Insertion" = > " Module
- Colle Ce code et Uniquement ce code
Function SufixFormat(Cel As Range)
 SufixFormat = Trim(Split(Cel.NumberFormat, """")(1))
End Function

- Tu peux maintenant utiliser la fonction en faisant dans les cellules : = SufixFormat(Tacellule)

- Enregistrer le classeur en xlsm pour conserver la macro

MAGNIFIQUE VALENTIN ! Je n'avais pas vu ce message juste avant que je poste le mien avec le fichier. Donc je viens de tester et.........ça marche ! c'est trop beau ! lol MERCI BEAUCOUP.

Pour savoir quand même, car je cherche à comprendre : pourquoi a-t-on besoin d'une VBA (de créer ce module) pour que la formule fonctionne ?

Encore merci ! :)

Il n'y a pas de quoi, finalement on y arrive.

Je remercie Tulipe aussi pour son aide.

Tout simplement pcq excel n'a pas prévue cette fonctionalitée. La fonction que tu utilise est une fonction créer de toute pièce dans l'éditeur VBA.

En gros on à "Ajouter" une fonction (via le code VBA) au système excel dans ce document.

Est ce plus clair ?

erreur

re

pour le Sport

=STXT(TEXTE(I8;"standard €");CHERCHE(" ";TEXTE(I8;"standard €"))+1;2)

qui fonctionne bien ; mais pas pour BT et par magie

STXT(TEXTE(I8;"standard tulipe");CHERCHE(" ";TEXTE(I8;"standard tulipe"))+1;6)

renvoie un royal "tulip1"

Rechercher des sujets similaires à "identifier caractere special"