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
 

Byfranck

XLDnaute Occasionnel
Re : double click = formulaire

Bonjour Jul03, et boujour aux amis du forum,


Je conseille à Jul ce lien pour se lancer :
Lien supprimé
Je suis un absuolu débutant en vba et cette appli à un été un outil génial pour débuter avec ma base de données clients.
Pour le double click pour ouvrir unr fiche j'ai aouté ça dans le l'usf avec ma listview:
Code:
'ICI C'est la sélection au Double Click & Ouverture fiche
Private Sub Listview1_DblClick()
'Dim lig As Long
Dim ligne As ListItem
On Error Resume Next
Set ligne = ListView1.SelectedItem
On Error GoTo 0
If ligne Is Nothing Then
    MsgBox "Aucune ligne n'est sélectionnée."
    Exit Sub
End If

    Range("B1").Value = ListView1.SelectedItem

  With ThisWorkbook.Sheets("Feuil1")
  .Range("A7").Select

'on cherche cette ref dans onglet onglet Feuil1 colonne A
  Sheets("Feuil1").Columns("A").Cells.Find(what:=Range("B1"), after:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False).Activate

   résultat.Show

End With
End Sub
Remplace tous les Listview par Listbox si ce sont des listbox que tu affiches, ça devrait fonctionner.
résultat est le nom de l'usf avec les textbox et combobox qui permettent de lire ou modifier la fiche du client.

Bon courage .
Franck
 

Pierrot93

XLDnaute Barbatruc
Re : double click = formulaire

Bonjour à tous

@Franck
Attention une "listview" et une "listbox" ne sont pas les mêmes controles, ils ne possèdent pas les mêmes propriétés, à commencer par la propriété "SelectedItem" présente dans ton code qui ne s'applique pas à une "listbox"...

bonne journée
@+
 

Byfranck

XLDnaute Occasionnel
Re : double click = formulaire

Bonjour à tous

@Franck
Attention une "listview" et une "listbox" ne sont pas les mêmes controles, ils ne possèdent pas les mêmes propriétés, à commencer par la propriété "SelectedItem" présente dans ton code qui ne s'applique pas à une "listbox"...
@+

You're right Pierrot ...
En tout cas je conseille le lien indiqué, il a un exemple parfait avec Listbox et ...sans erreur . :D

Cordialement
 

Jul018

XLDnaute Junior
Re : double click = formulaire

Bonjour le Forum, Bonjour Pierrot, Bonjour Franck,

Merci pour vos réponses

@ Pierrot. Une fois de plus je comprends la logique du raisonnement lorsque tu parles de l'initialise de l'usf. Cependant lorsque j'ai regardé ce que Dull avait fait j'ai remarqué qu'il n'utilisait par cette evênement d'où ma confusion lorsque j'ai adapté mon code.

En ce qui concerne l'initialisation de row.sel et de C je pense avoir initialisé sel par :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal sel As Range

Par contre avec C ( et le reste) mon idée était d'utiliser les données au croisement de la ligne sélectionnée au moment du db click et de la colonne C.
Je ne savais pas qu'il fallait l'initialiser:confused:

@ Franck. Merci pour cet exemple.. Même si je n'ai pas tout compris je vais m'y atteler de ce pas..

Bonne journée

Julien
@+
 

Pierrot93

XLDnaute Barbatruc
Re : double click = formulaire

Re,

pas top d'avoir modifié les arguments de l'événement double click de la feuille... Pas testé, mais pense pas que cela fonctionne en l'état... Ci dessous la bonne synthaxe :

Code:
Private Sub Worksheet_BeforeDoubleClick([B][COLOR="Red"]ByVal Target As Range, Cancel As Boolean[/COLOR][/B])

@+
 

Jul018

XLDnaute Junior
Re : double click = formulaire

Re,

Je m'étais une nouvelle fois inspiré d'une discution sur le forum et il semblait que cela marchait. Mon classeur précédent fonctionne avec.

Je me demande d'ailleurs ce qui fondamentalement les différencie pour que l'un marche et l'autre pas ( je parle de mes deux classeurs).


Julien
@+
 

Pierrot93

XLDnaute Barbatruc
Re : double click = formulaire

Re

perso sous excel 2003, quand j'exécutre ta procédure événementielle :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal sel As Range)

cela me provoque une erreur :

Erreur de compilation:
La déclaration de la procédure ne correspond pas à la description de l'événement ou de la procédure de même nom

@+
 

Jul018

XLDnaute Junior
Re : double click = formulaire

Re,

J'ai modifié mon code comme tu l'avais suggéré, notamment en déplaçant l'intialisation des données dans l'usf. J'ai repéré quelques erreurs. Je n'ai désormais plus de bug mais mon usf ne se charge pas avec les données en relation avec la cellule db clickée.. Peut être est-ce comme tu le suggéré Pierrot un probléme d'initialisation de l'emplacement de ces données..

Une autre question me vient à l'esprit, j'ai recherché un moment la réponse sur de nombreux forum mais en vain. Lorsque dans ma macro j'appelle des fichiers et des dossiers comment ne les appeller si l'on ne connait leur nom que partiellement. De la même façon que lorsque l'on effectue une recherche sous window en ajoutant ** à la suite du fichier ou dossier recherché.

est-ce??

Code:
Const Chemin = "X:\AFFAIRES\9092 - ADMINISTRATIF\mise au point excel\MODIF EXCEL\test tableau de gestion\Toutes les Affaires"
  Const strRepertoire = [COLOR="Red"]"Chemin" &" **"[/COLOR]

Merci d'avance.

Julien
@+
 

Pièces jointes

  • commande fournisseur exemple light test 1.zip
    43 KB · Affichages: 37

Pierrot93

XLDnaute Barbatruc
Re : double click = formulaire

Re

Maintenant il faut faire référence à la cellule active, et non à "target" dont la portée s'arrête à la feuille...

Code:
.TextBox1.Text = Cells([COLOR="Red"][B]ActiveCell[/B][/COLOR].Row, 3).Value 'n°affaire

Attention, j'ai remplacé la lettre C (qui n'est pas une variable!!!), par le numéro de la colonne supposée...

@+
 

Pierrot93

XLDnaute Barbatruc
Re : double click = formulaire

Re

pour ta recherche de nom de fichier partiel, regarde peut être le code ci-dessous :

Code:
Dim fs As FileSearch, monfichier As String
Const MonRepertoire = "C:\MesDocs\Excel\Test"
Set fs = Application.FileSearch
With fs
    .NewSearch
    .LookIn = MonRepertoire
    .Filename = "NomClasseurrecherché*" & ".xls"
    If .Execute > 0 Then monfichier = .FoundFiles(.FoundFiles.Count)
End With
If monfichier <> "" Then Workbooks.Open monfichier

@+
 

Jul018

XLDnaute Junior
Re : double click = formulaire

Re,

Merci Pierrot pour ta réponse malheureusement (je suis désolé de t'embêter une nouvelle fois avec ça) j'ai effectué les modifications en question et cela ne fonctionne pas.. Je viens de repasser le code dans tous les sens...

Concernant les colonnes je trouve ça tellement évident maintenant mais sur le coup hier cela m'a parut une bonne idée de les appeler par leur nom.. Mille excuses pour cette erreur inexcusable..:)


Merci pour l'explication vis à vis de la recherche de fichier avec le nom partiel c'est exactement ce que je cherchais..;) j'intègre la syntaxe de VBA petit à petit.

Julien
@+
 

Pièces jointes

  • commande fournisseur exemple light test 2.zip
    43.4 KB · Affichages: 56
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : double click = formulaire

Re

tu as créé ton propre événement initialize... qui bien évidement ne se déclenche pas
Code:
Private Sub ModificationComFo_Initialize(ByVal ActiveCell As Range, cancel As Boolean)


utilise les procédures mise à ta disposition, en l'occurence pour ce cas :

Code:
Private Sub UserForm_Initialize()

@+
 

Discussions similaires

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

Statistiques des forums

Discussions
312 778
Messages
2 092 033
Membres
105 159
dernier inscrit
frontera930