RefEdit et saisie au clavier

Bonjour,

J'ai repris un bout de macro, qui permet à l'utilisateur de saisir un numéro de nomenclature unique. Afin de simplifier l'utilisation, j'ai choisi de rajouter un RefEdit. Grâce à cela, l'utilisateur peut aller chercher la case de n'importe quel classeur afin de rentrer automatiquement le n° souhaité.

Mon souci intervient lors de l'exécution de la macro, dans un cas spécifique. Premièrement, voici mon userform:

image

Et voici le code qui nous intéresse :

Private Sub RefEdit1_Change()
    numeroNomenclatureASAP.Value = ""
    If (RefEdit1.Value <> "") Then
        numeroNomenclatureASAP.Value = Range(RefEdit1.Value).Value
    End If
End Sub

Sachant que l'objet "numeroNomenclatureASAP", c'est le TextBox de gauche, et le RefEdit est à doite.

Lorsque l'utilisateur se sert de l'outil normalement, pas de soucis: il désigne une cellule et le numéro apparaît bien.

Cependant, si, par inadvertance, il saisit du texte au clavier dans le refedit, il se bloque. Imaginons que j'écrive "a" dans le Refedit, la procédure

RefEdit1_Change()

s'active, et Excel essaye de trouver la valeur de la cellule "a", pour la remplir dans la TextBox.

Les deux solutions qui pourraient fonctionner seraient :

- De bloquer la saisie du RefEdit au clavier (On ne peut ainsi rentrer une référence qu'en sélectionnant une cellule avec la souris)

- De vérifier si la saisie du RefEdit constitue bien une unique cellulle existante, avant de mettre à jour le texte.

Je ne sais pas du tout si une de ces deux solutions est faisable, c'est pour cela que je fais appel à vous !

Merci d'avance,

Marco.

Bonjour marco76daman,

Pourquoi ne pas mettre le code dans l'évènement AfterUpdate plutôt

Private Sub RefEdit1_AfterUpdate()
  numeroNomenclatureASAP.Value = ""
  If (RefEdit1.Value <> "") Then
      numeroNomenclatureASAP.Value = Range(RefEdit1.Value).Value
  End If
End Sub

Comme ça normalement, plus de souci

A+

Bonjour Bruno !

Meci de ta réponse.

J'ai testé, mais je n'arrive pas à faire fonctionner le _AfterUpfate()...

Je me suis fait une feuille de tests, que je te joins si tu as une idée !

Merci,

Marco.

2test-refedit.xlsm (17.31 Ko)

Bonsoir Marco

Je n'utilise jamais ce contrôle et je n'avais pas essayé, juste vu que l'évènement existait, désolé.

Mais à priori il ne sait pas gérer l'évènement AfterUpdate et en ce qui concerne "Change"... ça fait planter

Du coup, ma question : pourquoi vouloir utiliser un RefEdit, quel est le but ?

A+

Bonjour Bruno,

Le principe est le suivant:

On a, à côté, un fichier excel qui répertorie les numéros de nomenclature pour le sujet en cours. Le but est de pouvoir sélectionner directement la le numéro voulu à la souris. En effet, on pourrait le taper au clavier, mais il y a un risque d'erreur non négligeable. On pourrait aussi copier le numéro et le coller dans la textbox, mais l'userform ne permet pas de le faire lorsque la macro est lancée (je pourrais le rendre non-modal, mais ça mettrait le brin dans toute la macro). On peut alors copier le numéro avant de lancer la macro. Le problème est que la macro peut être amenée à nous demander plusieurs numéros. On serait donc obligés de les taper au clavier, la répétition augmentant encore le risque d'erreurs.

Pour bloquer la saisie, j'ai finalement mis un label vide et transparent devant la zone de texte du RefEdit. Comme ça, il n'est remplissable qu'au moyen du petit bouton sur la droite. Pas géniale comme solution, mais ça fonctionne.

Si tu as une autre idée, je suis preneur, sinon merci pour ton aide !

Cordialement,

Marco

Rechercher des sujets similaires à "refedit saisie clavier"