double click = formulaire

Jul018

XLDnaute Junior
Bonjour

Je travaille sur une feuille dont les données sont préalablement entrées par le biais d'un formulaire.
Une fois le formulaire validé celui-ci va copier les données dans la ligne B112 puis appeler l'ouverture
d'une autre macro qui elle a vocation a copier ces données dans le tableau de l'onglet concerné puis dans un fichier situé dans un autre répertoire correspondant au bon numéro d'affaire.

Je souhaite que lors d'un double click sur une cellule que l'on désire modifier un nouveau formulaire s'ouvre avec les données liées à cette cellule et qu'une fois validé il effectue les même action que le formulaire précédent, c'est à dire incrémenter le tableau et la fichier affaire concerné.

Je me suis inspiré de ce que j'ai trouvé sur le net mais pour une raison que j'ignore ça ne marche pas, ça ne daigne même pas me signaler une petit erreur qui pourrait comprendre la source de cette inaction.

Voici mon code:

Code:
Private Sub Worksheet_beforedoubleclick(ByVal sel As Range, cancel As Boolean)

ModificationMO.Show 'ModificationMO est le nom de mon formulaire de modification

End Sub
____________________________________________________________

Private Sub CommandButton1_Click()
'on teste la saisie numéro d'affaire...
If Me.TextBox7.Text = "" Then
MsgBox "vous devez entrer un numéro d'affaire"
Me.TextBox7.SetFocus
Exit Sub
End If
'on teste la saisie du monteur...
If Me.TextBox10.Text = "" Then
MsgBox "vous devez entrer un monteur"
Me.TextBox10.SetFocus
Exit Sub
End If
'on teste la saisie de la statut...
If Me.TextBox8.Text = "" Then
MsgBox "vous devez entrer le statut"
Me.TextBox8.SetFocus
Exit Sub
End If
'on teste la saisie du numéro de la semaine...
If Me.TextBox9.Text = "" Then
MsgBox "vous devez entrer le numéro de la semaine"
Me.TextBox9.SetFocus
Exit Sub
End If
'on teste la saisie des heures effectuées...
If Me.TextBox5.Text = "" Then
MsgBox "vous devez entrer les heures effectuées"
Me.TextBox5.SetFocus
Exit Sub
End If
'on teste la saisie du flash...
If Me.TextBox6.Text = "" Then
MsgBox "vous devez entrer le flash"
Me.TextBox6.SetFocus
Exit Sub
End If

If Worksheets(ActiveSheet.Name).Cells(6, sel.Column).Value = "HEURES EFFECTUEES" Then
Me.TextBox7.Text = Cells(5, sel.Column).Value 'numéro d'affaire
Me.TextBox10.Text = Cells(3, sel.Column).Value 'monteur
Me.TextBox8.Text = Cells(4, sel.Column).Value 'statut
Me.TextBox9.Text = Cells(sel.Row, B).Value 'n°delasemaine
Me.TextBox5.Text = Cells(sel.Row, sel.Column).Value 'Heureseffectuées
Me.TextBox6.Text = Cells(sel.Row, sel.Column + 1).Value 'flash
End If

If Worksheets(ActiveSheet.Name).Cells(6, sel.Column).Value = "FLASH" Then
Me.TextBox7.Text = Cells(5, sel.Column - 1).Value 'numéro d'affaire
Me.TextBox10.Text = Cells(3, sel.Column - 1).Value 'monteur
Me.TextBox8.Text = Cells(4, sel.Column - 1).Value 'statut
Me.TextBox9.Text = Cells(sel.Row, B).Value 'n°delasemaine
Me.TextBox5.Text = Cells(sel.Row, sel.Column - 1).Value 'Heureseffectuées
Me.TextBox6.Text = Cells(sel.Row, sel.Column).Value 'flash
End If

Monteurconverti = Application.WorksheetFunction.Proper(Me.TextBox10.Text)
'mise en place des données dans la feuille de calcul

Range("B112").Value = Monteurconverti
Range("F112").Value = TextBox9.Text
Range("C112").Value = TextBox7.Text
Range("H112").Value = TextBox8.Text
Range("E112").Value = TextBox5.Text
Range("D112").Value = TextBox6.Text

'on décharge le formulaire
Unload Me 'de cette facon à la prochaine saisie les textbox seront vides à l'ouverture

'on appelle la fonction correspondante, celle qui va incrémenter les données dans le bon fichier
Call Marquer
 
Exit Sub

Merci d'avance pour toutes vos suggestions

Julien
 

Pierrot93

XLDnaute Barbatruc
Re : double click = formulaire

Bonsoir Julien

sauf erreur de ma part, il me semble que ta procédure "Private Sub Worksheet_beforedoubleclick" n'est pas au bon endroit. Elle a l'air d'être placée dans le module de l'USF, alors qu'elle devrait être positionnée dans le module de la feuille concernée...

bonne soirée
@+
 

Jul018

XLDnaute Junior
Re : double click = formulaire

Merci Pierrot,

En effet tu avais raison j'avais commis cette erreur. ll semblerait que ce ne soit pas la seule car bien que mon formulaire s'ouvre parfaitement au double click sur la feuille concernée il ne se rempli pas avec les données provenant de la cellule double-clickée et de ses références ( n° d'affaire, monteur, n°de la semaine, statut et flash). Je pense que cela provient de ma méthode pour appeler ces données ou peut être de la condition que j'y ai mise. Pour que ce soit plus clair je vous met en exemple un extrait de mon fichier (je suis désolé j'ai dû le tailler à la serpe pour qu'il satisfasse aux conditions du forum).

merci, bonne journée

Julien
 

Pièces jointes

  • ficchier de gestion exemple.xls
    48.5 KB · Affichages: 114

Jul018

XLDnaute Junior
Re : double click = formulaire

Bonjour le Forum,

Sincèrement je sèche,

Ma feuille, mon formulaire et mon code ont évolué. Désormais un double click sur une cellule de la feuille MoSemaine entraîne l’ouverture d’un userform qui pré remplit les données semaines / nom du monteur et statut du monteur.

C'est beaucoup plus simple et en théorie cela devrait marcher mais au double click j'obtiens un message d'erreur (sur la feuille concernée et plus particulièrement l'importation des données de la feuille dans le userform), "membre de méthode ou de données introuvable".

Je ne trouve pas la source de mon erreur..

Je souhaiterai que la validation de mon formulaire entraîne la coloration de la cellule double clickée au début du processus. est-ce qu'il suffit que je lance la fonction suivante
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("B:W")) Is Nothing Then
Worksheets(ActiveSheet.Name).Cells(Target.Row, Target.Column).Interior.ColorIndex = 6
End If
Application.EnableEvents = True
End Sub

j'en doute car après tout ma cellule n'a pas changée..

je vous remercie par avance pour vos lumières
 

Pièces jointes

  • MoSemaine exemple.zip
    19.6 KB · Affichages: 67
  • MoSemaine exemple.zip
    19.6 KB · Affichages: 64
  • MoSemaine exemple.zip
    19.6 KB · Affichages: 66

Pierrot93

XLDnaute Barbatruc
Re : double click = formulaire

Bonjour Jul

tu mets le code ci-dessous dans l'événement double click de la feuille, code dans le module de cette dernière donc, et tu fais référence à "me" qui représente cette feuille, alors que tes textbox sont placés sur l'usf. Déplace cette partie de code en la positionnant dans l'événement "Initialize" de l'usf...

Code:
Private Sub UserForm_Initialize()
Me.TextBox9.Text = Cells(3, sel.Column).Value 'n°delasemaine
Me.TextBox7.Text = Cells(sel.Row, B).Value 'Statut
Me.TextBox10.Text = Cells(sel.Row, A).Value 'nom du monteur
End Sub

d'autre part dans le module de l'usf, il y a un "exit sub" qui se promène tout seul, en dehors d'une procédure... supprime le...

bonne journée
@+
 

Jul018

XLDnaute Junior
Re : double click = formulaire

Bonjour Pierrot,

Merci beaucoup de ta réponse,

En effet je codais sur la feuille et non dans l'usf. Je pensais que "me" faisait référence à l'userform et non à la feuille. Initialiser l'usf avant qu'il ne s'ouvre semble plus logique. Plus de bug de ce côté là.

En revanche lors du double click sur ma feuille une erreur se manifeste: "Erreur d'éxécution '4244: Objet requis " avec en surbrillance mon nom d'usf dans le code suivant sur ma feuille MoSemaine.

Code:
Private Sub Worksheet_beforedoubleclick(ByVal sel As Range, cancel As Boolean)

GestionMontSemaine.Show

End Sub

je me gratte la tête mais je ne comprends pas pourquoi le programme ne le trouve pas alors qu'il le met en surbrillance:confused:

Julien.
@+
 

Pièces jointes

  • MoSemaine exemple 2.zip
    28.5 KB · Affichages: 35
Dernière édition:

Dull

XLDnaute Barbatruc
Re : double click = formulaire

Salut Jul018, Pierrot :), le Forum

Il manquait pratiquement tout les "End If" dans ton CommandButton1_Click()
j'ai mis chaque condition sur une ligne pour éviter les End If

Bonne Journée
 

Pièces jointes

  • MoSemaine exemple.zip
    30.8 KB · Affichages: 102
  • MoSemaine exemple.zip
    30.8 KB · Affichages: 95
  • MoSemaine exemple.zip
    30.8 KB · Affichages: 98

Jul018

XLDnaute Junior
Re : double click = formulaire

Merci beaucoup Dull, et encore merci à toi Pierrot

Cela fonctionne à présent je vais pouvoir m'atteler à coder d'autres onglets..

Un détail cependant, si j'ai bien compris ce que tu dis, il n'est pas nécessaire d'ajouter "End If" si l'on place la condition et l'argument si vrai sur la même ligne?

Merci pour tout.

Bonne journée

Julien
@
 

Dull

XLDnaute Barbatruc
Re : double click = formulaire

Re le Fil

Tout à Fait Julien
tu peux écrire

Code:
If Me.TextBox25.Text <> "" Then Call Affaire6
ou bien

Code:
If Me.TextBox25.Text <> "" Then
Call Affaire6
End If
Attention cependant
Code:
If Me.TextBox25.Text <> "" Then _
Call Affaire6
=
Code:
If Me.TextBox25.Text <> "" Then Call Affaire6
le underscore en fin de ligne ne sert qu'a couper ton code pour une meilleur visibilité de ce même code

En espérant avoir été assez complet

Bonne Journée
 
Dernière édition:

Jul018

XLDnaute Junior
Re : double click = formulaire

je suis désolé d'avoir à revenir sur le sujet mais :

J'ai tenté d'adapter le principe à un autre onglet avec d'autres données, j'étais confiant et optimiste mais une erreur que je n'avais pas rencontré jusque à présent s'est manifestée:

"erreur d'execution 1004 erreur définie par l'application ou par l'objet"

Originellement il y avait des listes dans certains des champs que la macro utlisait pour remplir l'usf. Après avoir cherché la source de l'erreur 1004 je les ai supprimé mais l'erreur fait de la résistance.

J'ai cherché la majeur partie de l'après-midi mais je bloque une nouvelle fois. Je m'en réfère à vos lumières..

Bonne soirée et merci d'avance

Julien
@
 

Pièces jointes

  • commande fournisseur exemple light.zip
    44.2 KB · Affichages: 73

Jul018

XLDnaute Junior
Re : double click = formulaire

Re Pierrot,

La ligne de code qui provoque l'erreur se trouve sur la feuille 1 dans la définition des valeurs que je souhaite ajouter à l'usf lors du double click:

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal sel As Range, Cancel As Boolean)
Cancel = True
With ModificationComFo
    .TextBox1.Text = Cells(sel.Row, C).Value 'n°affaire
    .TextBox2.Text = Cells(sel.Row, D).Value 'désignation
    .TextBox3.Text = Cells(sel.Row, E).Value 'responsable d'affaire
    .TextBox4.Text = Cells(sel.Row, F).Value 'date
    .TextBox5.Text = Cells(sel.Row, G).Value 'n° de commande
    .TextBox6.Text = Cells(sel.Row, H).Value 'catégorie de matériel
    .TextBox7.Text = Cells(sel.Row, I).Value 'fournisseur
    .TextBox8.Text = Cells(sel.Row, J).Value 'code 10
    .TextBox29.Text = Cells(sel.Row, K).Value 'code 11
    .TextBox9.Text = Cells(sel.Row, L).Value 'code 14
    .TextBox11.Text = Cells(sel.Row, M).Value 'code 16
    .TextBox30.Text = Cells(sel.Row, N).Value 'code 17
    .TextBox10.Text = Cells(sel.Row, O).Value ' code 18
    .TextBox31.Text = Cells(sel.Row, P).Value 'code 28
    .TextBox12.Text = Cells(sel.Row, Q).Value 'code 40
    .TextBox32.Text = Cells(sel.Row, R).Value 'code 41
etc...

merci de ton attention.

Julien @+
 

Pierrot93

XLDnaute Barbatruc
Re : double click = formulaire

Re

oui normal, tu as placé ces codes dans l'événement de la feuille excel alors qu'ils devraient être plutôt placés dans l'événement "initialize" de l'usf, comme dit dans mon post de 11h20. A noter qu'a ce moment là (le double click) ton usf n'est pas chargé en mémoire....
 

Discussions similaires

Réponses
7
Affichages
1 K
Réponses
4
Affichages
543

Statistiques des forums

Discussions
312 492
Messages
2 088 899
Membres
103 982
dernier inscrit
krakencolas