Excel 2013 : Remplacement automatique chiffre/ lettre webdings

Résolu/Fermé
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016 - 10 août 2016 à 14:28
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016 - 13 août 2016 à 14:27
Bonjour à tous !

Cela fait maintenant deux jours que je recherche la réponse à ma question en vain. Ce n'est pas très facile à expliquer, mais je vais essayer d'être le plus clair possible. ::B-

Dans un tableau, je cherche à ce que, dès que je tape le chiffre "1" dans la cellule A1 par exemple, celui-ci soit directement remplacé par une lettre en police Webdings.

J'aimerai en fait, cette correspondance : (un chiffre = une lettre Webdings)
- "1" dans la cellule A1 après avoir appuyé sur entrée deviendrait automatiquement ">" avec la police Webdings dans cette même cellule A1
- "2" dans la cellule A1 => "&" avec la police Webdings dans cette même cellule A1
- "3" dans la cellule A1 => "º" avec la police Webdings dans cette même cellule A1
- "4" dans la cellule A1 => "(" avec la police Webdings dans cette même cellule A1
- "5" dans la cellule A1 => "U" avec la police Webdings dans cette même cellule A1
- "6" dans la cellule A1 => "V" avec la police Webdings dans cette même cellule A1

J'aurai ensuite souhaité que ce "remplacement automatique" soit automatique pour les cellules "$H$3:$BB$32"

En espérant que l'un d'entre vous puisse m'aider ! :)
A voir également:

20 réponses

Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
10 août 2016 à 14:46
Bonjour,

Pour remplacer une valeur dans la cellule active, par VBA uniquement si tu as quelques notions
0
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016
10 août 2016 à 14:50
Merci Mike-31 !

C'est bien ce qu'il me semblait sauf que je n'ai AUCUNE notion et ne sais absolument pas comment faire ! C'est frustrant de savoir quelque chose, possible, sans pouvoir le faire ! Sais-tu où je pourrai trouver l'info ?

Merci !
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
10 août 2016 à 15:03
Re,

ça va être difficile bien que le code soit simple
voir le type de code
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Selection, Range("H3:BB32")) Is Nothing Then
If Target.Value = 1 Then Target = ">"
If Target.Value = 2 Then Target = "&"
If Target.Value = 3 Then Target = "º"
If Target.Value = 4 Then Target = "("
If Target.Value = 5 Then Target = "U"
If Target.Value = 6 Then Target = "V"
End If
End Sub

fait un clic droit sur l'onglet de ta feuille/Visualiser le code et colle le code cidessus
ferme le Visual Basic pour revenir sur ta feuille
0
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016
10 août 2016 à 15:06
Ok Merci ! Avant d'essayer, n'y a-t-il pas une spécificité pour que la lettre soit directement en Webdings ?

En fait, je voulais cela que pour les chiffres car j'ai un autre code plus simple (sans VBA pour les lettres)...

Je suis désolé d'abuser de ton temps...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
10 août 2016 à 15:12
Re,

je suis curieux de voir quel genre de code tu as sans VBA
peux tu le coller dans un post voir
0
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016
10 août 2016 à 15:21
En fait, ce n'est qu'une simple règle conditionnelle à savoir une colorisation de la cellule en fonction de la lettre indiquée dans la cellule.

Ce que je voudrai dans l'idéal, c'est que dans la cellule X :
- si j'écris une lettre précise, la cellule est colorisée comme je le souhaite (ça c'est ok !)
- si j'écris un nombre (ou une autre lettre n'entrant pas dans la règle de colorisation de cellule), une lettre au format webdings ou un symbole que j'aurai choisi, apparaisse...

Je ne sais pas si je suis assez clair...
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
10 août 2016 à 15:31
Re,

excuse moi mais je ne comprends pas ce que tu cherche faire
0
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016
10 août 2016 à 15:34
Ne t'excuse pas ! Tu essaies au moins ;-)
Malheureusement, je n'arrive clairement pas à faire plus clair...

Merci à toi en tout cas !
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
10 août 2016 à 15:37
Re,

fait abstraction de tes mise en forme conditionnelles qui te donnent satisfactions

ensuite que veux tu faire comme saisie


0
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016
10 août 2016 à 15:44
Ok !

Alors, tout en gardant ces mises en forme conditionnelles, j'aimerai que, lorsque j'écris "1" dans la cellule (H3, puis H4... jusqu'à H30, de même pour J3:J30), un symbole apparaisse (celui qui correspond au ">" dans la police Webdings).

De même, j'aimerai que si j'écris "2" au lieu de "1" dans ces mêmes cellules, un autre symbole apparaisse (ce qui correspond au "&" dans la police Webdings)...

J'aimerai faire ça pour les chiffres 1 à 6...

Est-ce plus clair ?
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
Modifié par Mike-31 le 10/08/2016 à 15:49
Re,

c'est bien ce que j'avais compris et il n'y a que le VBA pour régler ce problème de remplacement de saisie dans la même cellule et c'est le type de code que je t'ai donné qu'il faut utiliser, complété du choix de police de caractère
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016
10 août 2016 à 15:54
Ok !

Où dois-je inscrire le choix de police ?


If Target.Value = 1 Then Target = ">" (ici ?)
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
10 août 2016 à 16:06
Re,

comme cela
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Selection, Range("H3:BB32")) Is Nothing Then
If Target.Value = 1 Then
Target = ">"
ElseIf Target.Value = 2 Then
Target = "&"
ElseIf Target.Value = 3 Then
Target = "º"
ElseIf Target.Value = 4 Then
Target = "("
ElseIf Target.Value = 5 Then
Target = "U"
ElseIf Target.Value = 6 Then
Target = "V"
Target.Font.Name = "Webdings"
Else
Target.Font.Name = "Arial"
End If
End If
End Sub


il est possible d'ajouter également la taille de ta police dans le cas ou la police est Webdings
0
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016
10 août 2016 à 16:15
Je viens d'essayer et ça fonctionne mais à moitié !
Cela ne fonctionne que lorsque je tape 6 ! j'ai essayé de modifier le code mais cela plante...
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
10 août 2016 à 16:18
Re,

non mon code fonctionne parfaitement pour les valeurs de 1 à 6, peut être as tu formaté tes cellules en texte
0
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016
10 août 2016 à 16:56
J'ai beau essayé, il n'y a que le 6 qui fonctionne... Comment changer le format des cellules alors ? Franchement, j'ai l'impression qu'on touche au but ! ^^
0
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016
10 août 2016 à 17:51
A Mike-16 et aux éventuels autres contributeurs ;-)

Voici le code que j'ai validé dans VBA :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Selection, Range("H3:BB32")) Is Nothing Then
If Target.Value = 1 Then
Target = "h"
ElseIf Target.Value = 2 Then
Target = "e"
ElseIf Target.Value = 3 Then
Target = "N"
ElseIf Target.Value = 4 Then
Target = "("
ElseIf Target.Value = 5 Then
Target = "-"
ElseIf Target.Value = 6 Then
Target = "F"
Target.Font.Name = "Wingdings"
Else
Target.Font.Name = "Calibri"
End If
End If
End Sub

Lorsque j'inscris "6" dans une cellule, le bon symbole wingdings correspondant à la lettre "F" apparaît ! C'est exactement ce que je voulais.

Or, si j'inscris 1, 2, 3, 4 ou 5, dans cette même cellule, apparaît respectivement un "h", "e", "N", "(" ou "-"...

Quelqu'un pourrait-il me dire ce que je dois faire pour parvenir à finaliser mon projet ?
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
Modifié par Mike-31 le 10/08/2016 à 18:22
Re,

si je comprends bien, ça change tout, tu veux dire que dans ta cellule il peut y avoir 1 comme 1et 2 bien sur sans le et soit 12 ou encore 123
c'est bien ça
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016
10 août 2016 à 18:29
Pardon, je me suis mis mal exprimé !

Non, ce sera soit "1", "2, "3", "4", "5" ou "6" aucune possibilité chiffrée autre

Mon soucis c'est que la seule correspondance qui fonctionne comme je le veux est celle du "6".
Quand j'écris "6" en calibri, il écrit "F" et le remplacement automatiquement par le "F" en police Wingdings. Il ne le fait pas pour les autres...
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
10 août 2016 à 18:51
Re,
bizarre,
ferme ton Excel qui est peut être en erreur, puis télécharge mon fichier et teste la partie blanche qui correspond à ta plage
https://www.cjoint.com/c/FHkqYZsX61j
0
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016
10 août 2016 à 19:33
J'ai fermé mon excel... ça n'a rien changé.
J'ai utilisé ta version et le résultat est le même que pour ma feuille... seul le "6" fonctionne comme je le souhaite... je ne comprends pas...
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
10 août 2016 à 19:41
Re,
ouvre mon fichier, puis
tu as peut être un niveau de protection trop élevé, contrôle onglet Développeur/module Code/Sécurité des macros/coche Activer toutes les macros(non recommandé .........
Enregistre et ferme ton Excel
ouvre à nouveau mon fichier et accepte l'activation des macros si Excel te le propose et reteste le fichier voir
0
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016
10 août 2016 à 19:44
Malheureusement, même avec tout cela, rien ne change... Je ne sais vraiment pas d'où cela peut venir et je regarde en même temps à fond sur internet en vain...
0
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016
10 août 2016 à 19:48
Ne serait-ce pas possible de séparer avec :
- d'un côté une macro qui remplacerai automatiquement le "1" par le ">"
- une seconde macro qui remplacement automatiquement les nouvelles écritures (">") du format calibri au format wingdings du genre "s'il y a écrit ">", police wingdings"... pour ensuite faire de même avec les nombres de 2 à 6 ?
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
10 août 2016 à 19:49
Re,

c'est vraiment bizarre, arrête ton ordi avant de le redémarrer et teste mon fichier, et si ça ne fonctionne pas je ne vois pas d’où cela peut venir parce que le code fonctionne parfaitement pour l'avoir testé
0
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016
10 août 2016 à 19:50
Je ne sais pas si tu as vu mon dernier message plus haut...

Ok ! Je tente... C'est étonnant que ça bloque en effet !

Merci en tout cas de m'aider !!!
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
Modifié par Mike-31 le 10/08/2016 à 19:59
Re,

il est impossible d'avoir plusieurs codes avec la syntaxe
Private Sub Worksheet_Change(ByVal Target As Range)
si sur la même feuille du Visual Basic tu plusieurs code avec cette syntaxe il ne faut en conserver qu'un

après qu'il y ait plusieurs lignes ne change rien au fonctionnement du code mais tu peux remplacer ton code par ce code

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Selection, Range("H3:BB32")) Is Nothing Then
If Target.Value = 1 Then
Target = "h"
Target.Font.Name = "Wingdings"
Else
Target.Font.Name = "Calibri"
End If
End If
End Sub


ensuite tu testes le 1 puis tu reviens dans le code et change le 1 par 2 ainsi que le "h" par "e" puis par 3 etc ...
0
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016 > Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024
10 août 2016 à 20:29
Cela commençait à fonctionner ! Cependant, j'ai l'impression que lorsque j'en fait un, ça va, mais dans que j'en rajoute un second, il ne compte que le second...
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
10 août 2016 à 20:39
Re,

remplace tes codes par ce dernier
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Selection, Range("H3:BB32")) Is Nothing Then
On Error Resume Next
If Target.Value = 1 Then Target = ">"
If Target.Value = 2 Then Target = "&"
If Target.Value = 3 Then Target = "º"
If Target.Value = 4 Then Target = "("
If Target.Value = 5 Then Target = "U"
If Target.Value = 6 Then Target = "V"
If Target.Value = 1 Or Target.Value = 2 Or Target.Value = 3 Or Target.Value = 4 Or Target.Value = 5 Or Target.Value = 6 Then
Target.Font.Name = "Webdings"
Else
Target.Font.Name = "Arial"
End If
End If
End Sub


si ça ne fonctionne pas, peux tu mettre ton fichier anonymisé à disposition voir ce qui bloque en suivant cette procédure
1) Clic sur ce lien https://www.cjoint.com/
2) Clic sur le bouton Parcourir pour sélectionner ton fichier
3) Clic sur le bouton Créer le lien en bas de la page
4) Au bout de quelques secondes en haut de la page en bleu souligné un lien sera généré, tu le sélectionnes et tu le copies dans une réponse
0
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016
10 août 2016 à 20:48
Je dois m'absenter... Je vais continuer ce soir et demain matin car parfois, j'ai vu que ça pouvait marcher.
Je t'envoie ça demain si cela plante toujours ok ?
0
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016
11 août 2016 à 18:53
Bonsoir Mike-31 !
J'ai encore passé pas mal de temps sur mon truc et j'y suis parvenu !
En fait, j'avais posté mon problème sur un autre site et le code VBA ne fonctionnait pas non plus. En combinant le code que vous m'avez donné et celui de l'autre site, tout a fonctionné !

Voici le code si cela vous intéresse :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As String
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("H3:BB32")) Is Nothing Then
If Target.Value = 1 Then
Target = "?"
ElseIf Target.Value = 2 Then
Target = "e"
ElseIf Target.Value = 3 Then
Target = "%"
ElseIf Target.Value = 4 Then
Target = "("
ElseIf Target.Value = 5 Then
Target = "."
ElseIf Target.Value = 6 Then
Target = "F"

End If

If Target > "" Then
Target.Font.Name = "Wingdings"
Else
Target.Font.Name = "Calibri"

End If

End If
End Sub


Merci beaucoup pour votre aide en tout cas !!!
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
11 août 2016 à 19:12
Re,

tu es pratiquement revenu sur mon code post 13
Le principal est l'aboutissement
si ton problème est réglé, n'oublie pas de passer le statut de la discussion en résolu ou confirme le moi que je le fasse pour toi
0
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016
12 août 2016 à 14:30
Ah oui exact ! Si ce n'est la fin !

Merci beaucoup en tout cas !
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
12 août 2016 à 14:38
Re,

oui mais comme tu as écris la fin de ton code, quel que soit ta saisie la police de ta cellule passera en Webdings
mais bon si cela te convient
0
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016
13 août 2016 à 14:08
Bonjour !
Oui, je me suis rendu compte et j'ai trouvé la solution avec le code suivant... C'est encore plus simple que je ne le pensais !

Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As String
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("H3:BB32")) Is Nothing Then
If Target.Value = 1 Then
Target = "h"
Target.Font.Name = "Wingdings"
ElseIf Target.Value = 2 Then
Target = "e"
Target.Font.Name = "Wingdings"
ElseIf Target.Value = 3 Then
Target = "%"
Target.Font.Name = "Wingdings"
ElseIf Target.Value = 4 Then
Target = "("
Target.Font.Name = "Wingdings"
ElseIf Target.Value = 5 Then
Target = "."
Target.Font.Name = "Wingdings"
ElseIf Target.Value = 6 Then
Target = "F"
Target.Font.Name = "Wingdings"

End If
End If
End sub
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
13 août 2016 à 14:21
Re,

Oui mais avec tes cellules reste en format Webdings
et tu as 5 ligne inutiles, pour ma part je supprimerai toutes ces lignes remplacerai cette dernière par Target.Font.Name = "Wingdings"

ElseIf Target.Value = "h" Or Target.Value = "e" Or Target.Value = "%" Or Target.Value = "(" Or Target.Value = "." Or Target.Value = "F" Then
Target.Font.Name = "Wingdings"
Else: Target.Font.Name = "Calibri"
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As String
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("H3:BB32")) Is Nothing Then
If Target.Value = 1 Then
Target = "h"
ElseIf Target.Value = 2 Then
Target = "e"
ElseIf Target.Value = 3 Then
Target = "%"
ElseIf Target.Value = 4 Then
Target = "("
ElseIf Target.Value = 5 Then
Target = "."
ElseIf Target.Value = 6 Then
Target = "F"
ElseIf Target.Value = "h" Or Target.Value = "e" Or Target.Value = "%" Or Target.Value = "(" Or Target.Value = "." Or Target.Value = "F" Then
Target.Font.Name = "Wingdings"
Else: Target.Font.Name = "Calibri"
End If
End If
End Sub
0
Moys09 Messages postés 21 Date d'inscription mercredi 10 août 2016 Statut Membre Dernière intervention 13 août 2016
13 août 2016 à 14:27
Dac ! Merci beaucoup ! Je tâtonnais ;-)
0