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 :

saisir une variable dans une boite de dialogue [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 48
    Par défaut saisir une variable dans une boite de dialogue
    Bonjour,
    Je souhaite faire saisir une variable (un chiffre) par l'utilisateur de la macro. cette variable est ensuite utilisée dans le code.
    Je l'ai déjà fait sur une macro mais dans ce cas ça ne fonctionne pas.
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Sub pointes() 'ok
    Dim i As Long
    Dim a, b, c, d As Integer
     
     
    i = 2
    j = 2
     
     While Not IsEmpty(Cells(i, 1))
     
            If Month(Cells(i, 1)) = 1 And Weekday(Cells(i, 1)) <> 1 And Hour(Cells(i, 1)) >= a And Hour(Cells(i, 1)) < b _
                Or Month(Cells(i, 1)) = 1 And Weekday(Cells(i, 1)) <> 1 And Hour(Cells(i, 1)) >= c And Hour(Cells(i, 1)) < d _
                Or Month(Cells(i, 1)) = 2 And Weekday(Cells(i, 1)) <> 1 And Hour(Cells(i, 1)) >= 8 And Hour(Cells(i, 1)) < 10 _
                Or Month(Cells(i, 1)) = 2 And Weekday(Cells(i, 1)) <> 1 And Hour(Cells(i, 1)) >= 18 And Hour(Cells(i, 1)) < 20 _
                Or Month(Cells(i, 1)) = 12 And Weekday(Cells(i, 1)) <> 1 And Hour(Cells(i, 1)) >= 8 And Hour(Cells(i, 1)) < 10 _
                Or Month(Cells(i, 1)) = 12 And Weekday(Cells(i, 1)) <> 1 And Hour(Cells(i, 1)) >= 18 And Hour(Cells(i, 1)) < 20 _
            Then
            Range(Cells(i, 1), Cells(i, 2)).Select
            Selection.Copy Range(Cells(j, 4), Cells(j, 5))
            i = i + 1
            j = j + 1
             Else
            i = i + 1
     
            End If
     
      Wend
        Range("D2:E2").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        Sheets("Feuil2").Select
        Range("A2:B2").Select
        ActiveSheet.Paste
     
     
    End Sub
    Je souhaite faire saisir par l'utilisateur les variables a,b,c et d et pour qu'elles soient prises en compte dans mon code.

    Merci d'avance

  2. #2
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Bonjour,
    c'est pas très propre mais bon ça fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim a As Integer, b As Integer, c As Integer, d As Integer
     
     
    i = 2
    j = 2
     
    a = InputBox("Veuillez saisir la valeur de a")
    b = InputBox("Veuillez saisir la valeur de b")
    c = InputBox("Veuillez saisir la valeur de c")
    d = InputBox("Veuillez saisir la valeur de d")
     ' etc....
    Je pense qu'il est nécessaire de mettre une gestion d'erreur en place au cas ou rein ne serait saisie dans l'inputbox.

    Sinon je pense que c'est possible d'utiliser un userform avec 4 textboxs dans lesquels tu met tes valeurs que tu donnes ensuite à tes variables.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 48
    Par défaut
    Bonsoir rvtoulon,

    Merci pour ta réponse.

    Mon code n'est pas terrible sans doute, je code de manière très irrégulière. Mon code doit pouvoir se simplifier et être mieux présenter, j'ai besoin de conseil.

    J'ai créé les 4 inputbox 4, ça fonctionne.
    Comment peut on créer une gestion d'erreur ??

  4. #4
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    1° Quand je t'ai parlé de gestion d'erreur c'était pour prévénir au cas ou aucune donnée ne serait mise dans l'inputbox.
    donc en fait se peux-t-il que a, b ,c, ou d ne contiennent aucune valeur ou faut-il absolument en saisir une? si il faut en saisir obligatoirement une tu peux faire quelques choses comme 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
    i = 2
    j = 2
     
    Debut:
    If a = "" Then a = InputBox("Veuillez saisir la valeur de a")
    If b = "" Then b = InputBox("Veuillez saisir la valeur de b")
    If c = "" Then c = InputBox("Veuillez saisir la valeur de c")
    If d = "" Then d = InputBox("Veuillez saisir la valeur de d")
     
    If a = "" Or b = "" Or c = "" Or d = "" Then
    MsgBox ("Veuillez saisir une donnée, SVP!")
    GoTo Debut:
     
    Else
    'ICI LE RESTE DE TON CODE........................
     
    End If
    2° quand a optimiser ton code évite les select. par exemple au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range(Cells(i, 1), Cells(i, 2)).Select
            Selection.Copy Range(Cells(j, 4), Cells(j, 5))
    essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Range(Cells(i, 1), Cells(i, 2)).Copy Range(Cells(j, 4), Cells(j, 5))
    et au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Range("D2:E2").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        Sheets("Feuil2").Select
        Range("A2:B2").Select
        ActiveSheet.Paste
    essaye directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Range("D2:E2", Range("D2:E2").End(xlDown)).Copy Sheets("Feuil2").Range("A2:B2")

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 48
    Par défaut
    Bonjour,
    Merci pour ta réponse. Je m'y mets de suite.

  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 158
    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 158
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour éviter un GoTo qui n'est tout de même pas à conseiller.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Debut:
    If a = "" Then a = InputBox("Veuillez saisir la valeur de a")
    If b = "" Then b = InputBox("Veuillez saisir la valeur de b")
    If c = "" Then c = InputBox("Veuillez saisir la valeur de c")
    If d = "" Then d = InputBox("Veuillez saisir la valeur de d")
     
    If a = "" Or b = "" Or c = "" Or d = "" Then
    MsgBox ("Veuillez saisir une donnée, SVP!")
    GoTo Debut:
    Je privilégierais ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    While a = "" Or b = "" Or c = "" Or d = ""
      If a = "" Then a = InputBox("Veuillez saisir la valeur de a")
      If b = "" Then b = InputBox("Veuillez saisir la valeur de b")
      If c = "" Then c = InputBox("Veuillez saisir la valeur de c")
      If d = "" Then d = InputBox("Veuillez saisir la valeur de d")
    Wend
    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 Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Merci, corona
    je ne savais pas qu'on pouvait faire comme çà.

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

Discussions similaires

  1. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  2. Réponses: 4
    Dernier message: 29/01/2008, 11h12
  3. Réponses: 1
    Dernier message: 15/02/2007, 00h24
  4. Réponses: 2
    Dernier message: 18/05/2006, 15h28
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19

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