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 03/10/2011, 10h23   #1
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 236
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 236
Points : 36
Points : 36
Par défaut Reprendre valeur cible dans USF

Bonjour,

Soit un fichier excel.
Quand je double clique sur une cellule compris dans une plage définie, une macro se lance et demande confirmation pour la création d'un dossier.
Si oui, affichage d'un USF.
On choisit parmi trois solutions possible.
Quelque soit la réponse, un dossier est crée.

Problème : j'aimerais que le dossier ait le même nom que la cellule double cliquée.

J'ai essayé avec Target.value mais j'ai un message d'erreur "objet manquant".

Comment faire ?

Merci
8e8eClo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 10h30   #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,

sans le code c'est difficile de répondre.
__________________
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 déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 10h45   #3
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 236
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 236
Points : 36
Points : 36
Oups



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 
Dim Plage As Range
Dim wbModele As Workbook
 
Set Plage = Intersect(Target, Range("E11:E110"))
 
If Plage Is Nothing Then Exit Sub
 
If MsgBox("Etes-vous certain de vouloir créer un nouveau dossier  ?", vbYesNo + vbQuestion _
, "Demande de confirmation") = _
vbYes Then
 
Userform3.show
Code dans le USF 3 (vous moquez pas j'ai essayé ) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub CommandButton1_Click()
Dim fso
Dim sfol As String, dfol As String
Dim Plage As Range
 
Set Plage = Intersect(Target, Range("E11:E110"))
 
sfol = "S:\Inférieur_4000" 
dfol = "S:\Contrat\" & Target.Value
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFolder sfol, dfol
 
Unload Me
End Sub
8e8eClo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 11h06   #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
Citation:
une macro se lance et demande confirmation pour la création d'un dossier
et après dans le code
Code :
fso.CopyFolder sfol, dfol
Il faut créer un dossier ou faire une copie d'une dossier ?
__________________
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 déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 11h08   #5
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 236
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 236
Points : 36
Points : 36
Désolé pour l’ambiguïté.
Il faut copier un dossier.
8e8eClo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 11h20   #6
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
dans ce cas, le problème provient probablement de la déclaration de ta variable fso

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub CommandButton1_Click()
Dim fso AS object
Dim sfol As String, dfol As String
Dim Plage As Range
 
Set Plage = Intersect(Target, Range("E11:E110"))
 
sfol = "S:\Inférieur_4000" 
dfol = "S:\Contrat\" & Target.Value
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFolder sfol, dfol
 
Unload Me
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 déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 11h31   #7
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 236
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 236
Points : 36
Points : 36
Non toujours pas.

Le débogage indique l'erreur à ce niveau :

Code :
Set Plage = Intersect(Target, Range("E11:E110"))
"erreur d'exécution 424. Objet requis".
8e8eClo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 11h37   #8
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
Dans le commandbuton tu n'as pas de variable target. (Du moins la porté de cette variable reste au niveau du Worksheet_BeforeDoubleClick)
__________________
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 déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 12h21   #9
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 236
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 236
Points : 36
Points : 36
oui c'est bien ça le problème.

On ne peut pas faire le lien entre le beforedoubleclick et le USF ?
8e8eClo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 12h29   #10
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Bonjour,

Si tu double-cliques, tu sélectionnes, si tu sélectionnes :

Code :
MsgBox Selection.value 'qui est la target...


cordialement,

Didier
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 13h15   #11
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 236
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 236
Points : 36
Points : 36


Pas tout compris (désolé je ne maîtrise pas plus que ça).
8e8eClo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 13h19   #12
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
Voici ce que te propose Ormonth
Code :
Set Plage = Intersect(Selection, Range("E11:E110"))
Tu pourrais aussi utiliser ActiveCell
__________________
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 déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 13h38   #13
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 236
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 236
Points : 36
Points : 36
Ok.
Bon j'ai essayé et apparemment ça fonctionne bien.

Dans le beforedoubleclick j'ai mis comme indiqué :

Code :
Set Plage = Intersect(Selection, Range("E11:E110"))
Et dans le USF :

Code :
dfol = "s:\Contrat\" & Selection.Value

Merci !
8e8eClo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 13h40   #14
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Bonjour,

Quand tu doubles clic sur ta cellule, tu la sélectionnes (on ne rentre pas dans le fait que l'USF pourrait-être non modal etc...), donc quand tu as ton USF actif et que tu choisis une option, tu n'as pas besoin de chercher à te référer au Target de l'évènementiel vu qu'il suffit de te référer à la cellule sélectionnée ou active ce qui dans ce cas identique vu que target ne se réfère qu'à une cellule "Cellule la plus proche du pointeur de la souris lorsque le double-clic se produit.".
Dans ton cas c'est donc forcément la cellule double cliquée.

Par là même elle est sélectionnée et tu peux donc y référer directement avec la propriété Selection (cf aide VBA).

Ton target ne te sert qu"à t'assurer que tu es dans la plage désirée, ce n'est pas la peine de sa casser la tête au-delà..

cordialement,

Didier
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h11.


 
 
 
 
Partenaires

Hébergement Web