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 :

Utilisez les données d'un Inputbox Type 8 [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 27
    Par défaut Utilisez les données d'un Inputbox Type 8
    Bonjour le forum,

    Grâce à une première combobox de mon Userform, l'utilisateur doit selectionné une page de données.
    Ci-dessous, le code qui lui permets de selectionner la plage.

    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
    Private Sub CommandButton10_Click()
     
    Me.Hide 'Masquer l'Userform le temps de la séléction
     
    On Error GoTo SaisieAnnulee
    Set DonneesTOTALPRICE = Application.InputBox("selectionnez la plage -Total Price- (sans les entêtes de colonnes).", Type:=8)
    DonneesTOTALPRICE.Interior.ColorIndex = 6
     
    Me.TextBox10.Value = DonneesTOTALPRICE.Address(External:=True)
     
    SaisieAnnulee:
    Err.Clear
    On Error GoTo 0
    UserForm_Test.Show
     
    End Sub
    Maintenant, lors de l'enclenchement de ma 2eme combobox, je cherche à utiliser la plage définie précédement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim plage1 As Range
     
        Set plage1 = Range("DonneesTOTALPRICE")
            For Each c In plage1
            c.Value = Replace(c.Value, "€ ", "")
            c.Value = Replace(c.Value, ".", "")
            c.Value = Replace(c.Value, ",", ".")
            Next c
    Vous comprenez l'idée, mais le code ne fonctionne pas, malgré tentatives (Erreur 424)
    Quelqu'un a une idée de comment régler ça ?

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 114
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    N'ai je pas répondu à une question similaire dans cette discussion ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 27
    Par défaut
    Bonjour,
    Cette discutions m'a permis d'afficher l'adresse de la plage dans une textbox (Merci encore!)

    Mais je n'arrive pas "l'utiliser".
    Dans mon cas, maintenant que la plage est définie, j'aimerai pouvoir faire un traitement dessus:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim plage1 As Range
     
        Set plage1 = DonneesTOTALPRICE
            For Each c In plage1
            c.Value = Replace(c.Value, "€ ", "")
    Quand je lance cette macro, j'ai eu erreur 424 sur la ligne "For Each c In plage1", et je n'arrive pas à comprendre d'ou est-ce que cela vient.
    Est-ce que c'est parce que j'utilise mal cette plage ?

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 114
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Voici un exemple qui fonctionne parfaitement
    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 t()
      '
      Dim rng As Range
      Dim cell As Range
      Dim msg As String
      '
      Set rng = Application.InputBox("selectionnez la plage", Type:=8)
      '
      For Each cell In rng
        msg = msg & vbCrLf & cell.Value
      Next
      MsgBox msg
      Set rng = Nothing: Set cell = Nothing
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 27
    Par défaut
    Bonjour,

    Désolée pour le temps de réponse.
    Hmm, effectivement, si j'appelle la fonction comme ceci, le code fonctionne très bien:

    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
    25
    Private Sub CommandButton1_Click()
    Me.Hide 'Masquer l'Userform le temps de la séléction
     
    Dim plage As Range
     
    On Error GoTo SaisieAnnulee
    Set DonneesQUANTITY = Application.InputBox("selectionnez la plage -Quantité- (sans les entêtes de colonnes).", Type:=8)
    DonneesQUANTITY.Interior.ColorIndex = 6
     
    Me.TextBox1.Value = DonneesQUANTITY.Address(External:=True)
     
    UserForm1.Show
     
    SaisieAnnulee:
    Err.Clear
    On Error GoTo 0
    UserForm1.Show
     
        Set plage = DonneesQUANTITY
            For Each Cell In plage
            Cell.Value = Replace(Cell.Value, ".", "")
            Cell.Value = Replace(Cell.Value, ",", ".")
        Next Cell
     
    End Sub
    Mon point, c'est que j'aurais voulu séparer les 2 actions:
    * Le premier bouton qui permets à l'utilisateur de faire sa selection
    * Le deuxième bouton effectue les actions sur la plage.

    Un peu comme ça:

    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
    25
    26
    27
    28
    29
    30
     
    Private Sub CommandButton1_Click()
    Me.Hide 'Masquer l'Userform le temps de la séléction
     
    On Error GoTo SaisieAnnulee
    Set DonneesQUANTITY = Application.InputBox("selectionnez la plage -Quantité- (sans les entêtes de colonnes).", Type:=8)
    DonneesQUANTITY.Interior.ColorIndex = 6
     
    Me.TextBox1.Value = DonneesQUANTITY.Address(External:=True)
     
    UserForm1.Show
     
    SaisieAnnulee:
    Err.Clear
    On Error GoTo 0
    UserForm1.Show
     
    End Sub
     
    Private Sub CommandButton2_Click()
     
    Dim plage As Range
     
        Set plage = DonneesQUANTITY
            For Each Cell In plage
            Cell.Value = Replace(Cell.Value, ".", "")
            Cell.Value = Replace(Cell.Value, ",", ".")
        Next Cell
     
    End Sub
    Sauf qu'ici, le code ne fonctionne pas.
    Ce n'est pas possible de "rappeler" une plage définie précédemment dans le code ?

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 114
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il est bien entendu possible de passer un objet en argument à une procédure Sub ou Fonction et même à un UserForm bref on peut tout faire mais cependant, il serait préférable d'expliquer les tenants et aboutissants.

    Pourquoi deux boutons et pas un seul qui fait tout ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 27
    Par défaut
    Effectivement.

    J'avais récupéré un Userform fait de cette façon:
    * Un bouton pour définir chaque plage
    * Un bouton qui effectue toute les actions.

    J'ai essayé d'améliorer l'Userform qui m'a été fournit, mais l'amélioration ça peut aussi passer par ce genre de modification .
    Je vais essayer de tout garder sur le même bouton, on verra si ca marche.

    Merci encore!

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

Discussions similaires

  1. [DB2]Récupérer les données de type entier
    Par amy_g dans le forum DB2
    Réponses: 3
    Dernier message: 30/05/2007, 15h11
  2. Réponses: 1
    Dernier message: 02/11/2006, 10h40
  3. vb6: Mettre les données d'un textbox sous un fichier de type txt
    Par flav66 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 04/09/2006, 12h01
  4. Réponses: 12
    Dernier message: 28/04/2006, 11h38
  5. Réponses: 10
    Dernier message: 26/08/2005, 08h17

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