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

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
 

vgendron

XLDnaute Barbatruc
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
 

Pierrot93

XLDnaute Barbatruc
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
@+
 

jerome25

XLDnaute Nouveau
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
 

Discussions similaires

Statistiques des forums

Discussions
312 691
Messages
2 090 992
Membres
104 721
dernier inscrit
Hmidou