Forcer un format de cellule

Natiffar

XLDnaute Nouveau
Bonjour à tous !


Mes utlisateurs doivent taper un numéro de commande dans une cellule spécifique de ma feuille.
Quelqu'un saurait-il comment je peux forcer un format dans une cellule selon l'exemple ci-dessous:

Je voudrais que le format soit toujours le même à savoir 05U001 sans espace.

Hypothèse 1:

L'utilisateur tapent 05 U 001

Hypothèse 2:

Ils tapent 05 U001

Hypothèse 3:

Ils tapent 05U 001

Hypothèse 4:

Ils tapent 05U001

Hypothèse 5:

Ils tapent 0 5 U 0 0 1 (ah, le vilain!)

Et ainsi de suite...

Dans tous les cas, je veux que le résultat final n'est aucun espace.

J'ai essayé avec le format de cellule personnalisé mais je crois que ma demande est trop complexe. Existerait-il une solution en VBA?

Merci d'avance aux âmes charitables.

@+

Natiffar :evil:

Message édité par: Natiffar, à: 10/06/2005 12:29
 

Tibo

XLDnaute Barbatruc
Re:Natiffar

Bonjour Natiffar,

Il me semble qu'il y a une solution avec la fonction Validation qui consisterait à :

- interdire la saisie d'un ou plusieurs espaces ;

- contrôler que la chaine saisie est bien égale à 0U001

Solution sans macro.

Je regarde comment paramétrer le paramétrage de la fonction Validation et te la renvoir tout à l'heure...

si je n'ai pas été 'grillé' entre temps (lol)


Vu l'heure, je dis bon appétit à tous.
 

Natiffar

XLDnaute Nouveau
Bonjour Tibo et merci pour ton idée.

Mais je ne vois pas vraiment comment je peux interdire la saisie d'espace à partir de la Validation. A moins que tu ais pensé à utiliser VBA.

Merci pour tes futurs explications.

Attention à pas crâmer quand même.:)


@+

Natiffar : :evil:
 

Moa

XLDnaute Occasionnel
Salut !

En fait avec Données / Validation, tu peux emettre un message d'erreur au moment de la saisie et inviter l'utilisateur à réécrire son code.

Le côté positif, de cette manip est que les utilisateurs prendront forcément l'habitude de bien saisir les codes.

Maintenant, tu peux lancer une macro, soit avec un bouton de commande ou soit une macro évènementielle, qui fera le boulot.

Tu peux utiliser ce code :

For each cell in selection
Cell.Replace What:=' ', Replacement:=''
Next

@ +++

Moa
 

JJM

XLDnaute Occasionnel
Bonjour,

Si la cellule à vérifier est en 'A2', par exemple, tu peux entrer une fonction Texte Excel dans une autre cellule, qui contiendra ainsi la bonne mise en forme :

=SUBSTITUE(A2; ' ';'')

Ainsi tous les caractères blancs seront supprimés. Ce n'est pas la peine de faire appel à du code VBA pour cela, sauf à faire la même chose pour des vérifications spéciales, bien entendu.

Message édité par: JJM, à: 10/06/2005 13:21
 

Tibo

XLDnaute Barbatruc
Rebonjour Natiffar?

Je souhaitais te proposer la Validation suivante :

en A1 : Validation personnalisée : =SUBSTITUE(A1;' ';'')='05U001', mais qui nécessite une formule intermédiaire (cellule d'à coté) pour supprimer réellement les espaces.

Autre solution de Validation personnalisée : =A1='05U001'

(on peut ajouter la gestion des minuscules/majuscules avec la fonction MAJUSCULE)

puis paramétrer le message d'alerte dans l'onglet Alerte d'erreur.

Cela dit, pour supprimer automatiquement les espaces, vois la solution de Moa.
 

Natiffar

XLDnaute Nouveau
Bonjour à tous et merci pour cette grande mobilisation!

Je constate que vous avez tous pensé plus ou moins à la même solution à l'exception de Moa :p

J'ai testé vos solutions de Validation et de Substitue, mais je n'arrive pas à quelque chose de concluant. Je pense que mon message initial n'était peut-être pas assez détaillé et que vore solution n'est pas adapté à mon problème. Ou alors, je ne vous ai pas compris!!!

Voilà donc mon histoire...

Mon problème concerne un modèle de bon de commande sur lesquels les utilisateurs saississent un numéro de commande de la forme 05U001 tel que:

05 : les 2 derniers chiffres de l'année
U : la lettre qui désigne l'entité concernée
001 : un numéro incrémenté qui est pris dans un listing papier.

La raison pour laquelle j'ai besoin de supprimer les espaces, c'est que ce numéro de commande concatené avec le nom du fournisseur me donne le nom d'enregistrement du fichier. Pour des questions de recherche de commande et de tri dans les dossiers, je voudrais contraindre le format donner au numéro de commande afin de maintenir un format toujours identique pour mon nom de fichier.

Ainsi, la solution de Moa me paraît tout à fait convenir. Par contre, lorsque je l'utilise, j'ai un petit problème! La fonction s'applique à toutes les cellules de ma feuille. :(

Alors j'ai modifié la formule comme suit:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Cells.Range('NumCommande').Select = True Then
Cell.Replace What:=' ', Replacement:=''
End If

End Sub


Ce code aboutit à un autre problème. Je suis scotché dans la cellule NumCommande et dès que j'en sors il bug.
Je ne suis pas très doué en VBA et je suppose que mon code n'est pas bon. Alors toi, VBAiste chevronné, soit indulgeant avec moi :)

En fait, ce que je souhaite c'est que lorsque je saisie un numéro de commande dans la cellule NumCommande, il le formate comme souhaité avant d'enregistrer le fichier (soit en sortant de la cellule, soit en cliquant sur le bouton de validation de la commande).

Merci d'avance.

Moa, peut-être que tu pourrais me détailler un peu plus ton code.

@+

Natiffar :evil:
 

Natiffar

XLDnaute Nouveau
STOP


J'ai trouvé!

C'était tout bête. :silly:

Il suffisait simplement de taper cela:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Range('NumCommande').Replace What:=' ', Replacement:=''

End Sub

Désolé pour les dérangements et encore un grand merci à tous.

Spéciale dédicace à Moa

@+

Natiffar :evil:

Message édité par: Natiffar, à: 10/06/2005 16:16
 

Moa

XLDnaute Occasionnel
Salut !

Bravo à toi Nattifar d'avoir trouvé seul le bon code Vba.

Cela prouve que tu cherches à comprendre et cela fait plaisir et nous donne plus envie encore d'apporter de l'aide aux demandeurs.

Ps : la commande ' Cells ', prend en compte toutes les cellules d'une feuille.

Bonne soirée

@ +++

Moa
 

Discussions similaires

Statistiques des forums

Discussions
312 472
Messages
2 088 709
Membres
103 928
dernier inscrit
MIKETUAU