Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/09/2011, 14h36   #1
Invité régulier
 
Homme
Étudiant
Inscription : 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
Points : 9
Points : 9
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 :
If impro = "Depannage" Then
Williamm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 20h31   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 894
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 894
Points : 7 178
Points : 7 178
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 :
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 :
1
2
3
4
5
6
Public Rg As String
 
Private Sub CommandButton1_Click()
ActiveSheet.Range(Rg) = TextBox1.Text
Me.Hide
End Sub
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 22h37   #3
Invité régulier
 
Homme
Étudiant
Inscription : 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
Points : 9
Points : 9
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
Williamm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 23h57   #4
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 894
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 894
Points : 7 178
Points : 7 178
L'évenement Worksheet_SelectionChange se met au niveau de la feuille.

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

http://silkyroad.developpez.com/VBA/DebuterMacros/
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 08h59   #5
Invité régulier
 
Homme
Étudiant
Inscription : 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
Points : 9
Points : 9
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,
Williamm est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h27.


 
 
 
 
Partenaires

Hébergement Web