Remplacer une lettre par un mot dans un formulaire


#1

Bonjour à tous,
Y a-t-il un moyen pour remplacer une lettre par un mot.
Exemple : Si j’écris “O” ou “o”, le formulaire écrit “Actif”. Si j’écris “N” ou “n”, le formulaire marque “inactif”.
Je suis dans une liste de données.
Bien à vous


#2

Bonjour!

Je ne suis pas sur d’avoir bien compris ta question.
Pourrais tu nous donner plus de détails stp et si possible inclure un fichier d’exemple?

Merci et à bientôt


#3

Bonjour,
Ci-joint un fichier exempleEssai Liste Arbitres.xlsx (13,2 Ko)

Didlan


#4

Bonjour

A tester

MACRO:

Private Sub Worksheet_Change(ByVal Target As Range)
  Application.EnableEvents = False                        'Désactive les évènements pour éviter de tourner en boucle
  If Target.Column = 7 Then                               'Si la cellule est sur la colonne 7 (Colonne G)
    If LCase(Cells(Target.Row, 7).Value) = "o" Then       'Si la valeur de la cellule et "o" ou "O" (LCase= traduit en minuscule)
       Cells(Target.Row, 7).Value = "Actif"               'Alors j'inscris "Actif"
    ElseIf LCase(Cells(Target.Row, 7).Value) = "n" Then   ' mais si la valeur de la cellule et "n" ou "N"
       Cells(Target.Row, 7).Value = "Inactif"             'Alors j'inscris "Inactif"
    Else                                                  'Sinon
      Cells(Target.Row, 7).Value = ""                     'Pour les autres valeurs, je n'incris rien
    End If
  End If
  Application.EnableEvents = True                         'Réactive les évènements
End Sub

Essai Liste Arbitres.xlsm (19,4 Ko)


#5

Bonjour et merci pour l’aide, mais cela ne semble pas fonctionner.
Voilà ce que j’ai écrit :
Sub Activité()
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 7 Then
If LCase(Cells(Target.Row, 7).Value) = “o” Then
Cells(Target.Row, 7).Value = "Actif"
ElseIf LCase(Cells(Target.Row, 7).Value) = “n” Then
Cells(Target.Row, 7).Value = "Inactif"
Else
Cells(Target.Row, 7).Value = ""
End If
End If
Application.EnableEvents = True
End Sub


#6

Re,

Pourquoi l’écrire, puisque c’est la même, un copier/coller fonctionne dans ce cas
Ensuite, tu as écrit la macro où ???

Commence déjà par ôter ton Sub Activité()
et si la macro est dans la bonne feuille, tu me dira des nouvelles


#7

Il me dit :
“Erreur de compilation
End Sub attendu”


#8

Bon, tu as testé mon classeur, il fonctionne

Alors tu prend ma macro (sélection copier)
et tu l’a colle dans la feuille concernée sans rien avant ou après


#9

Toujours pas !
Mon essai macro listing des arbitres.pdf (97,9 Ko)

Didlan


#10

Re,

Il faut lire et faire ce qui est marqué

Tu mets la macro dans un MODULE !!!

Tu as regardez au moins ou étais ma macro par rapport à mon exemple !!!!!!


#11

Bonjour Mimimathy,
Que tu mettes en gras ta réponse ne change rien. J’apprends depuis quelques jours à comprendre les macros. Alors, pour savoir où se trouve ta macro dans ton exemple, c’est de me parler chinois sans le connaître. Même ton exemple que tu m’as fait ne fonctionne pas. Comment veux-tu que je comprenne ? Un coup, les macros fonctionnent avec Excel xlsm, un coup avec Excel xlsx.
Je commence à comprendre comment faire une macro, mais là… ???
Quand tu dis : “Alors tu prends ma macro (sélection copier)
et tu l’as colle dans la feuille concernée sans rien avant ou après”, Je la colle où ? Je n’en sais rien ! ou est ta macro ? je n’en sais rien !
Mais il est vrai que quand on sait, ce n’est pas difficile !


#12

Bonjour,

Alors, je vais répondre dans le calme, sans caractère GRAS (désolé, j’ai mis des majuscules)

1-) Si le classeur comporte une macro, il faut qu’il soit en extension *.XLSM, sinon, en *.XLSX, la macro ne sera pas enregistrée, et tu te retrouves avec une simple feuille de calcul.
2-) Sur le post que tu as répondu, tu as remis la macro en ajoutant ceci (Désolé, c’est en gras pour mentionner)
Sub Activité()
Private Sub Worksheet_Change(ByVal Target As Range)

Donc, regarde, si une macro commence par un SUB et fini par un END SUB, tu as remis un Sub Activité, d’où la demande d’un END SUB, mais là n’est pas le soucis.
la ligne: (ainsi que la macro complète fourni en détail)

Private Sub Worksheet_Change(ByVal Target As Range)

se rapporte à un SUB sur une FEUILLE (donc pas dans un MODULE) qui se lance automatiquement à chaque modification des cellules de la colonne 7, soit colonne G de cette feuille uniquement.

Tu copies la macro qui se trouve sous mon post (Ctrl C)
En étant sur ta Feuille, tu cliques à droite sur l’onglet de ta feuille (tu recherches “Visualiser le code”) clic dessus
et CTRL V pour coller
tu enregistres ton classeur en prenant soin de l’enregistrer sous le TYPE de classeur prenant en charge les macros (*.XLSM)
et si tu me dis que la macro ne fonctionne pas, c’est que tu as fais une “gourde”, alors tu récapépétes depuis le “Bédut” :grin:

Et là, je ne pense pas pouvoir être plus clair
Sinon, tu me balances ton classeur et je ferai la manip.


#13

Re,
En complément, ce que tu dois voir une fois la macro collée


#14

Merci Mimimathy,
Cela fonctionne. Je prolonge mon cas, car il me faut une deuxième colonne identique (deux instances différentes), mais pas forcément pareil, la première, ce peut-être “actif” et la seconde “inactif”. Colonne 7 et 8.


#15

Re,

Oui, eh bien dans les explications c’est pas ton fort non plus.
Explique, place un exemple, avec ce que tu désires, là j’ai rien compris

(deux instances différentes), mais pas forcément pareil :face_with_raised_eyebrow:


#16

La colonne 7 fonctionne. Maintenant, il me faut une deuxième colonne identique (n°8), à la suite qui me permettent, pour cette huitième colonne, d’avoir “o = Actif” ou "n = inactif"
Essai Liste Arbitres.xlsm (23,9 Ko)


#17

Elles fonctionne aussi du fait que j’ai enregistré une deuxième macro, mais avec le chiffre 8 au lieu de 7.
Merci tout de même pour ta patience, je t’en suis gré.
Didlan


#18

Re,

La macro:

Private Sub Worksheet_Change(ByVal Target As Range)
  Application.EnableEvents = False                        'Désactive les évènements pour éviter de tourner en boucle
  If Target.Column = 7 Then                               'Si la cellule est sur la colonne 7 (Colonne G)
    If LCase(Cells(Target.Row, 7).Value) = "o" Then       'Si la valeur de la cellule et "o" ou "O" (LCase= traduit en minuscule)
       Cells(Target.Row, 7).Value = "Actif"               'Alors j'inscris "Actif"
    ElseIf LCase(Cells(Target.Row, 7).Value) = "n" Then   ' mais si la valeur de la cellule et "n" ou "N"
       Cells(Target.Row, 7).Value = "Inactif"             'Alors j'inscris "Inactif"
    Else                                                  'Sinon
      Cells(Target.Row, 7).Value = ""                     'Pour les autres valeurs, je n'incris rien
    End If
  End If
  
  If Target.Column = 8 Then                               'Si la cellule est sur la colonne 7 (Colonne G)
    If LCase(Cells(Target.Row, 8).Value) = "o" Then       'Si la valeur de la cellule et "o" ou "O" (LCase= traduit en minuscule)
       Cells(Target.Row, 8).Value = "Actif"               'Alors j'inscris "Actif"
    ElseIf LCase(Cells(Target.Row, 8).Value) = "n" Then   ' mais si la valeur de la cellule et "n" ou "N"
       Cells(Target.Row, 8).Value = "Inactif"             'Alors j'inscris "Inactif"
    Else                                                  'Sinon
      Cells(Target.Row, 8).Value = ""                     'Pour les autres valeurs, je n'incris rien
    End If
  End If
  Application.EnableEvents = True                         'Réactive les évènements
End Sub

Tu copies la macro qui se trouve sous mon post (Ctrl C)
En étant sur ta Feuille, tu cliques à droite sur l’onglet de ta feuille (tu recherches “Visualiser le code”) clic dessus

Tu sélectionnes l’ancienne macro,et CTRL V (Cela remplacera l’ancienne par la nouvelle)

tu enregistres ton classeur en prenant soin de l’enregistrer sous le TYPE de classeur prenant en charge les macros (*.XLSM)


#19

C’est cool, Merci bien.
Didlan

NB, je pense qu’il faut mettre résolu quelque part !


#20

Re,

Tu cliques sur la case à cocher sur mon post :wink:

Bon WE et à la prochaine