InputBox : sélection d’une seule cellule dans une plage donnée

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jerome25

XLDnaute Nouveau
Bonjour à tous,

Je travail sur un tableau d’archivage avec dans ma première colonne des référence de carton, dans une autre colonne le contenu du carton, etc.

Je dois saisir la référence d’un carton qui sera utilisée par ma macro pour imprimer une étiquette.

J’utilise une InputBox de type 2 pour pouvoir soit entrer une référence manuellement, soit sélectionner une cellule et récupérer sa valeur.

Je voudrais savoir si avec une InputBox, il est possible :
1) D’autoriser uniquement la sélection qu’une seule cellule
2) D’autoriser uniquement la sélection dans une plage donnée (ma colonne A)


Merci d’avance,
Jérôme
 
Re : InputBox : sélection d’une seule cellule dans une plage donnée

Bonsoir
je pense que oui..
en faisant un test sur la taille de la selection
et boucler sur le inputbox jusqu'à ce que la selection ne soit que d'une cellule
un truc dans le genre

do
set cellule=inputbox("saisissez une seule cellule:",type:=8)
cellule.select
until cellule.count=1
 
Re : InputBox : sélection d’une seule cellule dans une plage donnée

Bonjour,

essaye ceci, le "on error..." pour éviter le message d'erreur si bouton "annuler" :
Code:
Option Explicit
Sub test()
Dim c As Range
Do
    On Error Resume Next
    Set c = Application.InputBox("Choisissez plage...", Type:=8)
Loop While c.Count > 1 Or Intersect(c, Columns(1)) Is Nothing
On Error GoTo 0
End Sub

bonne journée
@+
 
Re : InputBox : sélection d’une seule cellule dans une plage donnée

Bonjour,

Tout d’abord merci pour vos réponses.

Pierrot, j’ai eu un petit problème avec ton code. Il marche la plupart du temps. Mais lorsque l’on sélectionne plusieurs cellules (ou une cellule dans une mauvaise colonne), on ne peut plus annuler par la suite. En effet, l’objet Range C est alors affecté et on ne peut donc pas sortir de la boucle. Après quelques grattages de tête, j'ai trouvé une solution. Pour remédier au problème, je réinitialise la variable C en début de boucle.

Code:
Sub test()

  Dim c As Range
  Do
    Set c = Nothing
    On Error Resume Next
    Set c = Application.InputBox( _
    prompt:="Sélectionner une cellule de la colonne A correspondant à la référence du carton", _
    Title:="Sélection du carton", _
    Type:=8)
  Loop While c.Count > 1 Or Intersect(c, Columns(1)) Is Nothing
  ' On Error GoTo 0

End Sub


Par contre, je n’ai pas compris le "On Error GoTo 0" final. Quel est son intérêt ?

Jérôme
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour