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 :

Macro avec msgbox et userform


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2011
    Messages : 99
    Par défaut Macro avec msgbox et userform
    Bonjour à tous,

    Je voudrais lorsqu'un utilisateur clique sur une cellule, qu'un msgbox apparaisse selon deux conditions:

    -S'il clique sur une cellule ou la ligne comprise sur une plage bien définie (exemple dans mon Excel je veux qu'il s'occupe uniquement des lignes E16:O23) ne contient aucun caractère, alors un msgbox apparaît demandant "voulez-vous modifier?" S'il clique sur Oui, ça ouvre un userform avec une liste. En cliquant sur une des valeurs de la liste, je voudrais que ça remplisse le tableau selon la même ligne (que la active.cell) et la bonne colonne. Par exemple, si l'utilisateur choisit dans la liste "RTT" alors ça doit figurer dans la colonne F et sur la même ligne que la Active.cell

    -S'il clique sur une cellule ou la ligne comprise sur une plage bien définie (exemple dans mon Excel je veux qu'il s'occupe uniquement des lignes E16:O23) contient un caractère, alors un msgbox apparaît et annonce:

    (Contenu de la colonne 1 et de la même ligne que la Active.cell) & "est en" &(contenu de la cellule ou apparaît un caractère).

    Une fois fois qu'on clique sur Ok, ça ouvre un msgbox: "voulez vous modifier" Si on répond oui, ça ouvre le même UserForm et on rempli le tableau de la même manière que le cas précédent. i.e: Par exemple, si l'utilisateur choisit dans la liste "RTT" alors RTT doit figurer dans la colonne F et sur la même ligne que la Active.cell

    J'espere avoir été le plus clair possible. Je vous joins le excel sur lequel j'ai commencé a travailler mais j'arrive pas a remplir toutes ces conditions :/

    Merci pour voter aide
    Will


    edit: petite erreur dans le vba, c'est bien et non pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If impro = "Depannage" Then

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Une solution

    Dans l'évenement SelectionChange on test si l'adresse de la cellule sélectionné fait partie de la plage E16 à O23 on affiche les messages

    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Not Intersect(Target, Range("E16:O23")) Is Nothing Then
     
        If Target.Value <> "" Then
            MsgBox Range("A" & Target.Row).Value & " est en " & Target.Value, vbOKOnly
        End If
     
        If MsgBox("Voulez-vous modifier?", vbDefaultButton2 + vbYesNo) = vbYes Then
     
            UserForm1.Rg = Target.Address
            UserForm1.Show
     
        End If
     
    End If
     
    End Sub
    Dans la Userform on déclare une Variable Rg qui contiendra l'adresse de la cellule sélectionné.
    Cela permettra de donner à cette cellule la valeur de la textbox lors de la validation par le Commandbutton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Rg As String
     
    Private Sub CommandButton1_Click()
    ActiveSheet.Range(Rg) = TextBox1.Text
    Me.Hide
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2011
    Messages : 99
    Par défaut
    Merci pour ta réponse,
    Je suis plutôt débutant en vba, comment est ce que j'incorpore ton code ds ma macro existante ?

    Merci
    Will

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    L'évenement Worksheet_SelectionChange se met au niveau de la feuille.

    Ou est ton code ? (module, Thisworkbook, Worksheet)

    http://silkyroad.developpez.com/VBA/DebuterMacros/

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2011
    Messages : 99
    Par défaut
    Bonjour jfontaine,

    Effectivement ça marche.
    Par contre, j'aimerai que lorsqu'on clique sur une case du tableau qui est vide mais que si une case de la même ligne du tableau ne l'est pas, alors un MsgBox annonce:

    (contenu de la colonne 1 et de la même ligne que Active.Cell) & "est en" & (contenu de la même ligne et de la case non vide du tableau)

    En cliquant sur Ok, il faut ensuite reprendre la situation ou l'on demande par MsgBox: "Voulez-vous modfiez", si oui afficher le userform puis remplacer la valeur du tableau par la valeur choisi dans liste du combobox.

    Il y a une petite subtilité tout de même car lorsqu'on veut modifier le (contenu de la même ligne et de la case non vide du tableau), la valeur choisi dans le Combobox ne doit pas forcement aller dans la même case que celle qu'on veut remplacer.
    Par exemple, si à la base la case non vide est "RTT" et qu'on choisi de remplacer "RTT" par "Maladie" alors ça affichera "Mal" dans la même ligne mais dans une colonne du tableau dédié à "Maladie"

    J'espère avoir été le plus clair possible. J'essaie de mon coté mais pour le moment je n'y suis pas arrivé. Je sèche un peu (beaucoup même)

    En tout cas, merci pour ton aide
    Will,

Discussions similaires

  1. Problème de lancement de macro avec un userform
    Par luksvibes dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/07/2013, 16h02
  2. [VBA-E] macro avec fonction "TRANSPOSE"
    Par Ardeciel dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 12/06/2006, 16h11
  3. plantage macro avec requete type insert
    Par zephyr59 dans le forum Access
    Réponses: 4
    Dernier message: 06/04/2006, 00h34
  4. [VBA][Excel]Exécution macro avec fichiers source
    Par ouezon dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/12/2005, 00h00
  5. macro avec visual
    Par moldavi dans le forum MFC
    Réponses: 4
    Dernier message: 02/04/2005, 20h14

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