XL 2016 Recherche une lettre dans une ligne de 10 cases puis affectation d'un autre lettre aux autres cases

Astyanax

XLDnaute Occasionnel
Bonjour,
j'ai presque tout dit dans le titre.
Voici mon problème :
j'ai une ligne de 10 cases A1 à J1 et sur cette ligne je ne peux placer une lettre spécifique qu'une seule fois.
Par ex : O
Si le O est détecté sur une des 10 cases, je dois affecter une autre lettre aux 9 cases restantes.
Par ex : X
Je ne vois pas trop comment trouver la bonne formule.
Si quelqu'un a une idée, merci
 

JBARBE

XLDnaute Barbatruc
Bonjour à tous,
Il serait bon de savoir quel sont les 10 lettres spécifiques que tu veux mettre parmi beaucoup d'autre peut-être !
Peut-être que ces lettres se trouvent dans un tableau !
Un fichier serait le bienvenu dans ce cas !
Sinon il serait facile de mettre par exemple les 10 premières lettres de l'alphabet !
Bonne journée
 

JBARBE

XLDnaute Barbatruc
Re,
comme ça :
Lettres.jpg
 

JBARBE

XLDnaute Barbatruc
C'est bien sûr une formule qui m'intéresse.
Le faire manuellement n'a aucun intérêt pour une demande sur ce forum.
Mais une formule à un objectif !
Si c'est pour positionner ton O à un endroit précis définitif, je n'en vois pas l’intérêt !
A moins de faire en sorte que ton O se promène dans un endroit quelconque (aléatoire) de A à J en appuyant sur une touche ( ça je ne sais pas faire mais il y a surment un bénévole pour le faire)
Bonjour mapomme !
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Euh ! elle est où ta formule ?
Il n'y a pas de formule. C'est une procédure évènementielle qui se déclenche quand une cellule est modifiée.
On a accès au code avec les touches ALT+F11.
Le code de cette procédure est dans le module de code de la feuille "Feuil1". Le code de la procédure événementielle est: :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xrg, s$
  If Intersect(Range("a1:j1"), Target) Is Nothing Then Exit Sub
  Set xrg = Intersect(Range("a1:j1"), Target)(1, 1)
  s = LCase(xrg)
  Application.EnableEvents = False
  Range("a1:j1") = "X"
  If s = "o" Then Cells(1, xrg.Column) = "O"
  Application.EnableEvents = True
End Sub

Si tu le demandes, je peux commenter la procédure...
 

Discussions similaires