Activation auto d'une UseForm VBA

Bonjour,

Merci pour toutes ces précisions dont j'en prend bonne note et notamment pour les tableaux structurés !!

Concernant le vba, je me trouve avec cette erreur:

image

Bien à vous

Concernant le vba, je me trouve avec cette erreur:

Oui là dans votre USF quel est le nom du label qui reprend le numéro de client ?

Simplement LABEL11

image

Il faut changer en Label1.
De ce que j'ai vu dans votre fichier le label1 n'existait pas
je vous l'avais expliqué Hier à 18:41

Sinon dans le code remplacez --> label1.caption par label11.caption

D'accord, je comprends mieux!!

Il y a cette fois-ci cette erreur

image

Cette ComboBox2 n'a pas lieu d'exister, il me semble car ormis la Combo avec le choix de civilité le reste ne sont que des TextBox...

Mon raisonnement ait-il bon?

Cette ComboBox2 n'a pas lieu d'exister, il me semble car ormis la Combo avec le choix de civilité le reste ne sont que des TextBox...
Mon raisonnement ait-il bon?

exact ! Vous pouvez supprimer cette ligne alors et adapter le code

Le chiffre dans la ligne item correspond à la colonne dans le tableau (attention il ne s'agit pas de la colonne de votre feuille)
Donc si je prends l'exemple item(lig, 3), il s'agit de la colonne 3 du tableau et pas de la colonne C (sauf si la colonne 3 du tableau correspond à la colonne C bien entendu)

Parfait merci encore !!

Cela fonctionne cette fois-ci correctement l'intégration du Num Client comme évoque dans votre mesage:

Non vous ne créez pas les numéros, il se mettront automatiquement lors de l'ajout client

Vous devez juste ajouter une colonne A avec une nom "Num client " par exemple

Dans votre USF, vous pouvez ajouter une textbox qui sera juste visuelle mais vous pouvez aussi ajouter un LABEL en lieu et place. et d'ailleurs cela tombre bien car il n'y a pas de label nommé LABEL1 dans l'usf

Ais-je fais une erreur dans mon USF?

image

Ais-je fais une erreur dans mon USF?
Cela fonctionne cette fois-ci correctement l'intégration du Num Client comme évoque dans votre mesage:

Heu je ne vois pas d'erreur.
vous avez un souci ? ou c'est bon ?

Disons que lorsque je rempli USF, tous les éléments s'intègrent bien à sa place mais la colonne Num Clients reste vide ...

Hors et sauf erreur de ma part, vous m'évoquiez le faite que celui-ci se génèrerai automatiquement !

Il me semble que c'était vos propos:

1.Non vous ne créez pas les numéros, il se mettront automatiquement lors de l'ajout client

2.Vous devez juste ajouter une colonne A avec une nom "Num client " par exemple

3.Dans votre USF, vous pouvez ajouter une textbox qui sera juste visuelle mais vous pouvez aussi ajouter un LABEL en lieu et place. et d'ailleurs cela tombre bien car il n'y a pas de label nommé LABEL1 dans l'usf

Les points 2 et 3 sont bien établis simplement le point 1 ne fonctionne pas !

Disons que lorsque je rempli USF, tous les éléments s'intègrent bien à sa place mais la colonne Num Clients reste vide ...

Si vous avec choisi Label11, il faut corriger dans tous les codes qui se trouvent dans l'USF
Et là dans votre vue --> https://forum.excel-pratique.com/s/goto/1190468, je vois que vous n'avez pas fait le point 7 dans ce lien --> https://forum.excel-pratique.com/s/goto/1190345

Bonjour,

En effet, je pensais les avoirs modifiés mais j'en avais oublié un... la moindre erreur et tout tombe à l'eau mais ces précisons en fait un monde passionnant !!

Concernant le point 7, j'avais intégrer votre ligne de code à cette endroit:

image

Je comprends que je me suis trompé ...

Mille merci pour votre aide précieux!

Salut à tous,

Si je peux me permettre :

Concernant le point 7, j'avais intégrer votre ligne de code à cette endroit:

Tu écrit dans le tableau, et ensuite tu affectes au Label11 le bon numéro, cela ne peux que te créer des problèmes.

Pour bien démarrer tu dois nommer les contrôles du formulaire explicitement, exit les TextBox1, ComboBox2, CommandButton1 etc.

Bonjour

Concernant le point 7, j'avais intégrer votre ligne de code à cette endroit:

Vous devez avoir cette ligne à deux endroits. Dans la sub initialize et à l'endroit de votre vue.


Une petite amélioration à faire est de vider l'USF lorsque vous avez cliqué sur le bouton "Nouveau client"

Pour ce faire, procédez comme suit :

1. ajoutez ce code en dessous des autres

Private Sub ViderUSF()
Dim c As Control

For Each c In Me.Controls
    Select Case TypeName(c)
        Case "TextBox"
            c.Value = vbnullstring
        Case "ComboBox"
            c.Value = vbnullstring
            c.ListIndex = -1
    End Select
Next c
End Sub

2. Dans le code Private Sub CommandButton1_Click(), ajoutez cette instrution entre le END IF et la ligne Label11 = worksheet.......

Call ViderUSF 'ou ViderUSF

Rem : juste pour info, le Call n'est plus vraiment nécessaire dans les codes aujourd'hui mais pour ma part je le laisse toujours car je trouve cela plus pratique pour celui (débutant ou non) qui doit analyser les lignes d'une macro. Avec cette instruction on voit directement l'appel vers une autre macro. Donc ce n'est pas gênant en soit.

Reste la suite je suppose ?

Cordialement

Bonjour,

Merci pour vos retour!!

Alors vous me précisez de mettre la ligne à 2 endroits :

Vous devez avoir cette ligne à deux endroits. Dans la sub initialize et à l'endroit de votre vue.

Sauf à dire que je perds totalement, je ne pense pas avoir de "SUB INITIALIZE" et c'est surement la mon problème...

Je vous transmet mon code global:

Private Sub Label11_Click()
End Sub

Private Sub UserForm_Initialize()
ComboBox1.List() = Array("M.", "Mme", "Mlle")
End Sub

Private Sub CommandButton1_Click()
If MsgBox("Confirmez-vous l'insertion de ce nouveau contact ?", vbYesNo + vbDefaultButton2, "Demande de confirmation d'ajout") = vbYes Then
  If TextBox2.Text = vbNullString Then MsgBox "veuillez ajouter un nom de client !", vbCritical, "Client inconnu": Exit Sub
  With Sheets("Clients").ListObjects(1)
      If .ListRows.Count = 0 Then
          .ListRows.Add: lig = 1
      Else: .ListRows.Add: lig = .ListRows.Count
      End If
      With .DataBodyRange
        .Item(lig, 1) = Label11.Caption
        .Item(lig, 2) = ComboBox1.Text
        .Item(lig, 3) = TextBox1.Text
        .Item(lig, 4) = TextBox2.Text
        .Item(lig, 5) = TextBox3.Text
        .Item(lig, 6) = TextBox4.Text
        .Item(lig, 7) = TextBox5.Text
        .Item(lig, 8) = TextBox6.Text
        .Item(lig, 9) = TextBox7.Text
      End With
    End With
End If
Call ViderUSF 'ou ViderUSF
Label11 = WorksheetFunction.Max(Sheets("Clients").ListObjects(1).ListColumns(1).DataBodyRange) + 1
End Sub

Private Sub CommandButton2_Click()
    Dim Ligne As Long
    Dim I As Integer

    If MsgBox("Confirmez-vous la modification de ce contact ?", vbYesNo, "Demande de confirmation de modification") = vbYes Then
        If Me.ComboBox1.ListIndex = -1 Then Exit Sub
        Ligne = Me.ComboBox1.ListIndex + 2
        Ws.Cells(Ligne, "B") = ComboBox2
        For I = 1 To 7
            If Me.Controls("TextBox" & I).Visible = True Then
                Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & I)
            End If
        Next I
    End If
End Sub

Private Sub CommandButton3_Click()
    Unload Me
End Sub

Private Sub ViderUSF()
Dim c As Control

For Each c In Me.Controls
    Select Case TypeName(c)
        Case "TextBox"
            c.Value = vbNullString
        Case "ComboBox"
            c.Value = vbNullString
            c.ListIndex = -1
    End Select
Next c
End Sub

Merci mille fois pour votre aide

Bien à vous

Salut,

Bien sur quelle y est...

Private Sub UserForm_Initialize()
    ComboBox1.List() = Array("M.", "Mme", "Mlle")
End Sub

Bonjour,

Il me semblait bien mais lorsque je l'intègre à cet endroit, je me retrouve avec cette erreur:

image

Du coup, je me suis demandé si j'avais pas loupé une étape...

Re,

Sauf à dire que je perds totalement, je ne pense pas avoir de "SUB INITIALIZE" et c'est surement la mon problème...

Si --> Private Sub UserForm_Initialize()


Dans la Sub initialize vous devez ajouter la ligne Label11. Donc comme ceci

Private Sub UserForm_Initialize()
ComboBox1.List() = Array("M.", "Mme", "Mlle")
Label11 = WorksheetFunction.Max(Sheets("Clients").ListObjects(1).ListColumns(1).DataBodyRange) + 1
End Sub

Si vous ne mettez pas cette ligne, le numéro de client ne sera pas mentionné à l'ouverture de votre USF

Si votre code s'arrête encore à l'endroit que vous montrez vérifiez que votre USf se nomme bien Ficheclient. Sélectionnez l'USF et vous devez avoir ceci

image

NB : inutile de ne me rajouter les codes dans vos posts, je les ai dans votre fichier

Bonjour,

J'avais donc bien copier le code au bonne endroit mais cela perdure et mon USF se nomme bien "FicheClient" !

C'est pour cela que je me suis permis de vous transmettre tout mon code pour voir si je ne m'étais pas tromper ailleurs...

Merci pour votre appui

Bonjour

J'avais donc bien copier le code au bonne endroit mais cela perdure et mon USF se nomme bien "FicheClient" !

PAs sûr car je ne vois pas cela dans votre vue ici --> https://forum.excel-pratique.com/s/goto/1191017

Sinon, bizarre car je n'ai pas cela avec votre fichier
Essayez un peu le code comme ceci dans votre module

Sub Lancer_formulaire()
Load FicheClient
FicheClient.Show 0
End Sub

Si cela ne fonctionne pas, donnez-moi le fichier

Je l'avais en effet retiré par peur d'une mégarde...

Je viens de modifier et le module et même constat ! Je pense que j'ai vraiment dû louper une étape mais malheureusement je ne l'a vois pas.

Je vous transmet donc mon fichier, vous aurez surement plus de chance

16gestion-libassi-1.zip (841.38 Ko)
Rechercher des sujets similaires à "activation auto useform vba"