IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

lnputBox limiter le choix de la selection [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 637
    Par défaut lnputBox limiter le choix de la selection
    bonjour et bonne année,
    j'ai 2 pb avec mon inpuBox :
    1. J'ai un tableau nomé TablAgent et je voudrais obliger l'utilisateur à choisir sa (ses) saisie(s) uniquement dans la colonne du champ [Nom Actuel]
    2. Comment récupérer les valeurs des cellules sélectionnées par l'utilisateur et non les adresses

    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Dim MonTab() As String
    Dim Plage As Range
    Dim i As Integer
    On Error Resume Next
    Application.DisplayAlerts = False
        Set Plage = Application.InputBox("Sélectionnez une plage", "Sélection de cellules", Type:=8)
        MonTab = Split(Plage.Address, ",")
        On Error GoTo 0
    Application.DisplayAlerts = True
        If Plage Is Nothing Then
            Exit Sub
            Else
                For i = 0 To UBound(MonTab)
                    MsgBox MonTab(i)
                    Range("N" & i + 1) = MonTab(i)
                Next i
        End If
    si je remplace .Adress par .Value, je ne récupère que la valeur de la 1ère sélection, puis il sort de la boucle sans traiter next i
    est-ce que quelqu'un peut m'aider svp ? d'avance merci

  2. #2
    Membre éprouvé Avatar de Neutthsch
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2016
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2016
    Messages : 105
    Par défaut
    Salut Mouftie,

    [Petit Conseil perso :]
    Le problème de ce code c'est qu'il traite toutes les erreurs de la même façon. C'est bien sur très pratique (voir indispensable) si tu cherches à réagir face à une erreur côté opérateur (saisi de texte au lieu de chiffres par exemple) mais ça empêche de détecter correctement les problèmes de ton programme.
    C'est d'ailleurs exactement ce qui doit se passer ici, dans ta boucle il doit rencontrer une erreur et du coup il sort de ta boucle pour aller à 0 (Goto 0) et tu ne peux plus identifier ce qui pose problème.

    Personnellement j'utilise la gestion d'erreur qu'une fois que j'ai maîtrisé le reste de mon programme et surtout avec parcimonie.

    [/Petit Conseil perso :]


    Bon maintenant rentrons dans le vif du sujet :

    Citation Envoyé par mouftie Voir le message
    j'ai 2 pb avec mon inpuBox :
    C'est quel genre de box? Une combobox?

    Citation Envoyé par mouftie Voir le message
    je voudrais obliger l'utilisateur à choisir sa (ses) saisie(s) uniquement dans la colonne du champ [Nom Actuel]
    Si on parle bien d'une combobox, il faut au préalable que tu l'alimentes avec les données de la colonne [Nom Actuel]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sub UserForm_Initialize()
    ...
    et que tu choisisses dans les propriétés de la combobox : MatchRequired = true
    • Soit en dur dans les propriétés de la combobox
    • Soit dans ton programme VBA


    Citation Envoyé par mouftie Voir le message
    Comment récupérer les valeurs des cellules sélectionnées par l'utilisateur et non les adresses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Variable= Cells(x,x).Value
    C'est sur que ça marche si c'est bien ce que tu cherches.

  3. #3
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 637
    Par défaut
    bonjour Neutthsch
    merci de ta réponse.
    il s'agit d'une InputBox (comme MsgBox) sans userform.

    la gestion des erreurs ne sert qu'à gérer l'utilisateur qui clique sur annuler dans la fenêtre

    En ce qui concerne les valeurs a récupérer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Variable= Cells(x,x).Value
    ma variable MonTab récupère une donnée de la forme "$C$18" ; je ne vois pas comment utiliser cell(x,x).Value ; comme je l'ai dit, range("A1") = MonTab(i).Value ne fonctionne pas.

  4. #4
    Membre éprouvé Avatar de Neutthsch
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2016
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2016
    Messages : 105
    Par défaut
    Citation Envoyé par mouftie Voir le message
    la gestion des erreurs ne sert qu'à gérer l'utilisateur qui clique sur annuler dans la fenêtre
    C'est ce que je disais donc, tu cherches à gérer un seul type d'erreur, hors On Error traite toutes les erreurs de la même façon en renvoyant le programme dans les cordes (0 ici) dès qu'il en rencontre une. C'est bien ce qui arrive ici, il traite ton bug programme comme un utilisateur qui clique sur annuler.

    Je te conseille de le mettre en commentaire le temps de bien cerner ton programme et de rétablir à la toute fin.

    Voilà pour ta demande, TableauSource est le tableau qui contient la colonne [Nom Actuel]:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Dim Plage As Range
    Dim i As Integer
     
        Range("TableauSource[Nom Actuel]").Locked = False                                                         ' Je déverrouille les cellules de la colonne [Nom Actuel]
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True                     'Je protège la feuille
        ActiveSheet.EnableSelection = xlUnlockedCells                                                                   ' en ne rendant accessible que les cellules déverrouillées
        Set Plage = Application.InputBox("Sélectionnez une plage", "Sélection de cellules", Type:=8)   ' C'est ton code mais la personne ne peut se balader que sur les cellules déverrouillées
        ActiveSheet.Unprotect                                                                                                        ' et je retire la protection de la page
     
        If Plage Is Nothing Then
            Exit Sub
        Else
            For Each MonTab In Plage.Cells  ' Je me balade dans toutes les cellules (Identifiées tour à tour par MonTab) de Plage
                MsgBox MonTab.value                  ' MonTab est donc une cellule et je peux donc renvoyer sa valeur
                Range("N" & MonTab.Row + 1) = MonTab.value
            Next
        End If
    End Sub

  5. #5
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 637
    Par défaut
    bonjour Neutthsch,
    Merci beaucoup pour ton aide, c'est exactement ce que j'avais demandé, et merci tout autant pour avoir pris le temps d'expliquer les actions.
    Je te souhaite une excellente journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Imposer le choix d'un select
    Par kaiser59 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 20/02/2007, 18h33
  2. Réponses: 2
    Dernier message: 12/12/2006, 11h07
  3. Ouvrir un pop-up après choix dans un select.
    Par JackBeauregard dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/11/2006, 18h11
  4. [PHP-JS] Choix d'un select pour un autre select
    Par mLk92 dans le forum Langage
    Réponses: 5
    Dernier message: 11/08/2006, 10h45
  5. Limiter la largeur d'un select possible?
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 28/10/2005, 23h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo