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 :

Comment récupérer la plage de cellules sélectionnée dans l'inputbox afin de pouvoir exécuter une macro ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2014
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2014
    Messages : 308
    Par défaut Comment récupérer la plage de cellules sélectionnée dans l'inputbox afin de pouvoir exécuter une macro ?
    Bonjour à tous les lecteur:
    Ayant un niveau moyen en VBA, Je n'arrive pas à récupérer la plage de cellules sélectionnée dans l'inputbox afin de pouvoir exécuter ma macro ?
    Exemple dans ma Feuille Excel j'ai sélectionné B3:C8 donc $B$3:$C$8 s'affiche dans l'Inputbox
    Je désire récupérer ces valeurs en début de mon code Ma_macro (plage sélectionnée variable bien-sur)

    Par avance merci pour votre aide

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub Ma_macro()
    Dim cellule As Range
     
    On Error Resume Next
    Set Set reponse = Application.InputBox(Title:="Information", Prompt:="Veuillez sélectionner une colonne ou des cellules", Type:=8, Default:="")
     
    'Question comment récuperer la plage de cellules sélectionnée dans l'inputbox afin de pouvoir executer ma macro ?
     
    Ma macro à executer
     
    If reponse Is Nothing Then Exit Sub
    End if

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Hello,

    Le plus simple est de donner la plage de cellule récupérée via input box, en paramètre à la nouvelle fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Sub Ma_macro() 
        Dim Reponse As Excel.Range
        Set Reponse = Application.InputBox(Title:="Information", Prompt:="Veuillez sélectionner une colonne ou des cellules", Type:=8, Default:="")
     
        'Question comment récuperer la plage de cellules sélectionnée dans l'inputbox afin de pouvoir executer ma macro ?
        If Not (Reponse Is Nothing) Then
            MaFonction reponse
        End If
    End Sub
     
    Private Sub MaFonction(ByRef Plage As Excel.Range)
        '// Code à déterminer
    End Sub
    PS: L'instruction On Error Resume Next est à bannir, si une erreur survient, c'est qu'il y a une bonne raison et doit être traitée.
    Ignorer les erreurs, c'est de la paresse pure et dur.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2014
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2014
    Messages : 308
    Par défaut
    Bonjour : Merci pour votre participation.
    Le code ne semble pas respecter la sélection affichée dans l'Inputbox.
    J'ai peut être commis une erreur

    Exemple je veux colorer les cellules de mon choix
    Cellule sélectionnée A1
    Pour l'exemple je sélectionne B3:C8 et c'est la cellule A1 qui est colorée.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Sans le source de ce que tu as écrit, il va être difficile de te répondre.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2014
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2014
    Messages : 308
    Par défaut
    La sélection dans l'InputBox B3:C8 doit se traduire par l'équivalent de Range("B3:C8").Select mais de façon variable.

    Exemple
    Exemple Colorer une plage avec une InputBox.xlsm

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Ta fonction ne fait aucune utilisation du paramètre, donc ça ne peut pas fonctionner.

    De plus, tu dois tester le type de Selection, car tu n'as aucune garantie que c'est une plage.
    Option explicit est une bonne pratique, configure ton IDE pour qu'il soit ajouté automatiquement (Outils ==> Options, et coche la case: Déclaration des variables obligatoire).

    Au final, le code devrait ressembler à ceci:
    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
    20
    21
    22
    23
    24
    Option Explicit
     
    Public Sub Test()
        Dim Reponse As Excel.Range
        Set Reponse = Application.InputBox(Title:="Information", Prompt:="Veuillez sélectionner une colonne ou des cellules", Type:=8, Default:="")
     
        'Question comment récuperer la plage de cellules sélectionnée dans l'inputbox afin de pouvoir executer ma macro ?
        If Not (Reponse Is Nothing) Then
            MaFonction Reponse
        End If
    End Sub
     
    Private Sub MaFonction(ByRef Plage As Excel.Range)
        If (TypeOf Selection Is Excel.Range) Then
            Dim SelectedRange As Excel.Range
            Set SelectedRange = Selection
     
            If (Plage.Interior.Color = 0) Then
                SelectedRange.Interior.Color = RGB(255, 32, 56)
            Else
                Plage.Interior.Color = RGB(255, 32, 56)
            End If
        End If
    End Sub

Discussions similaires

  1. Récupérer la cellule sélectionne dans un tableau
    Par mongilotti dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 10/05/2010, 13h51
  2. Réponses: 10
    Dernier message: 06/05/2010, 20h51
  3. Réponses: 2
    Dernier message: 27/01/2009, 13h41
  4. comment récupérer un contenue de cellule dans son format
    Par fstrobel dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/11/2007, 13h49
  5. Réponses: 5
    Dernier message: 22/03/2007, 12h52

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