Activation auto d'une UseForm VBA

Bonjour,

J'aimerai activer un tableau automatiquement lors de l'ouverture de ma feuille de calcul et que ce tableau puisse remplir les différents onglets de ma page.

J'ai fait tout le UseForm mais je n'arrive pas à l'activer... Je vois que j'ai dû faire une erreur quelques part mais je tourne en rond là!!!

Je vous envoie le tableau où vous pourrez avoir accès dans l'onglet développeur à ma problématique!!

Le souhait dans le fonctionnement serait d'ouvrir le fichier "Gestion Libassi" => puis de sélectionner "clients" => ouverture du fichier "ne pas modifiez"(c'est simplement pour moi) => et la UseForm s'active automatiquement pour remplir le tableau

J'espère que je suis suffisamment compréhensible et tiens à vous remercier énormément par avance pour vote aide

18gestion-libassi.zip (733.74 Ko)
18ne-pas-modifier.xlsm (151.08 Ko)

Bonjour

Le souhait dans le fonctionnement serait d'ouvrir le fichier "Gestion Libassi" => puis de sélectionner "clients" => ouverture du fichier "ne pas modifiez"(c'est simplement pour moi) => et la UseForm s'active automatiquement pour remplir le tableau

1. Pourquoi faites-vous deux fichiers ?
Il suffit d'ajouter la feuille de gestion Libassi dans votre fichier "ne pas modifier". C'est bien plus simple
Sinon sachez que l'on peut aussi ouvrir directement l'usf à l'ouverture du fichier "ne pas modifier"

2. Dans l'userform Fiche client, vous avez une sub open. Là vous devez supprimer ces deux lignes. ce code ne doit pas être placé à cet endroit et de surcroit, cela fait partie des anciennes façon de programmer (excel 2003 et avant). On peut faire autrement aujourd'hui

3. Votre sub initialize uniquement comme ceci. Vous pourriez aussi mettre combobox1 plutot que combobox2 vu que vous n'avez qu'une seule combobox

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

4. point Important :
dans vos feuilles mois,
- vous avez chaque fois un tableau qui est au format structuré. Avec ce type de tableau il ne faut jamais laisser de lignes sans données. Donc supprimez-les
- Pour le total, cliquez dans le tableau et dans le menu excel, cliquez sur "création tableau". ensuite cochez la case à cocher "Total"

Crdlt

Re bonjour,

Tout d'abord un grand MERCI pour votre retour détaillé!!

Alors j'ai pris note des différents et ai apporté les correctifs notamment sur les points 1, 2 et 3. Malgré tout l'usf ne s'ouvre pas automatiquement ...

Et j'ai ce message d'erreur :

capture d ecran 2024 02 29 151913

Et pour le point 4, sauf à dire que je n'ai pas bien compris, vous me conseillez de supprimer les lignes "vides" et de les insérer à chaque remplissage!?

Je vous joint de nouveau le fichier avec vos remarques...

20gestion-libassi-1.zip (834.23 Ko)

Malgré tout l'usf ne s'ouvre pas automatiquement ...

Logique votre combobox est nommée différemment dans l'userform
Allez dans l'éditeur VBA et faites ceci

1. Supprimez le module de classe qui ne vous sert à rien
2. Allez dans votre Userform : cliquez sur la combobox pour la sélectionner et dans les propriétés changez le 2 par 1 (actuellement le nom n'est pas correct)
3. Allez dans votre module 1 et ajoutez ceci dans la Sub Lancer_formulaire()

FicheClient.Show

4. Toujours dans l'éditeur VBA, allez dans le menu Affichage --> sélectionnez Explorateur d'objets de projet.
Faites un double click sur Thisworbook et dans la fenêtre ajoutez ce code

Private Sub Workbook_Open()
Sheets("Accueil").Select
Call Lancer_formulaire
End Sub

Faites un test

Si ok ne m'ajoutez pas de fichier. J'ai le vôtre avec les modifications que je vous donne

On passera à la suite après

Je viens donc de faire les modifications et j'ai ce message d'erreur

capture d ecran 2024 02 29 151913

Le message n'aide pas
Cliquez sur débogage pour voir la ligne à problème

En effet c'est beaucoup mieux ainsi

capture d ecran 2024 02 29 151913

Ok Normal. Votre nom de feuille est ceci --> ACCEUIL...
Donc soit vous modifiez dans le code ou mieux vous modifiez le nom de la feuille dont le U et E sont inversés

J'ai honte là

Bah cela arrive... surtout avec ce mot là...
Bon ensuite, Je ne sais pas à quoi vous sert les feuille Mois vis à vis de la feuille client mais il y a une chose que je ferais c'est attribuer une numéro de client. En colonne A par exemple

Après vous pourriez aussi mettre le tableau au format structuré comme dans les feuilles Mois

Alors cette fois, ça marche parfaitement mais au mauvais moment!

La fenêtre s'ouvre directement à l'ouverture du fichier excel... Hors je souhaiterai qu'il s'ouvre uniquement lorsque je "clic" sur ce logo:

image

Et dernier point, les informations rentrés dans le formulaire doivent pouvoir s'agrémenter dans la feuille "clients"!!

Encore merci

Vous n'avez pas précisé que vous vouliez cette action via un bouton

Regardez ce que vous avez écrit au debut -> Malgré tout l'usf ne s'ouvre pas automatiquement ...

Donc on fait marche arrière :
1. Supprimez le code dans Thisworkbook
2. Click droite sur votre bouton Clients
3. Choisir "Associer à une macro" et dans la fenêtre sélectionnez le code "Lancer_formulaire"

Rem : par contre dans votre fichier il y a un souci avec ce bouton client. J'ai comme l'impression que ce bouton était lié à une autre fichier.
Ok j'ai trouvé. Vous avez mis un lien hypertexte sur ce bouton. Donc supprimez-le avant de faire les points 2 et 3 ci-avant

Et dernier point, les informations rentrés dans le formulaire doivent pouvoir s'agrémenter dans la feuille "clients"!!

Oui mais on verra après. Quid de mettre un code client comme je vous ai écrit avant ?

Décidemment j'ai vraiment beaucoup de lacune!!

Désolé pas toujours facile afin de bien être clair ... Je ferai attention de mieux faire la suite.

Alors j'ai bien suivi les étapes et cette fois cela fonctionne bien

Dernière étape => Manque plus que les informations du formulaire puisse s'agrémenter dans le tableau de la feuille "client"

Alors les feuilles "mois" sont là pour faire le suivi des dépenses et recettes de la boutique de mon amie... Concernant l'onglet "clients" celui-ci servirait à avoir un petit suivi des clients venant en boutique!!

Je trouve l'idée du code client intéressant en effet, je devrai donc créer une colonne en A avec différents code mais cela n'obligerai t'il pas de créer une nouvelle TextBox afin de notifier le code client ?

Décidemment j'ai vraiment beaucoup de lacune!!

Tracassez pas de trop. Le but du forum c'est aider la personne qui est bloquée dans son projet. Je suis passé par là aussi ... et avec excel et l'informatique on n'a jamais fini d'apprendre

Je trouve l'idée du code client intéressant en effet, je devrai donc créer une colonne en A avec différents code mais cela n'obligerai t'il pas de créer une nouvelle TextBox afin de notifier le code client ?

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

Pour le tableau cela donnerait ceci par exemple

image

Pour l'userform ceci par exemple

image

Parfait, c'est chose faites !

Et beaucoup plus cohérent ainsi...

Ok

Bon pour la feuille clients faites comme ceci,

1. sélectionnez A3 à J4
2. Allez dans le menu accueil et cliquez sur l'icone "mettre sous forme de tableau"
3. Choisir un modèle
4. Cochez la case "mon tableau comporte des entêtes"
5. Une fois fait supprimer toutes les lignes depuis la ligne 5 jusque la ligne 55
6. Pour terminer, allez dans l'USF et remplacez le code Private Sub CommandButton1_Click() par celui ci-dessous

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("Tableau1")
      If .ListRows.Count = 0 Then
          .ListRows.Add: lig = 1
      Else: .ListRows.Add: lig = .ListRows.Count
      End If
      With .DataBodyRange
        .Item(lig, 1) = Label1.Caption
        .Item(lig, 2) = ComboBox1.Text
        .Item(lig, 3) = ComboBox2.Text
        .Item(lig, 4) = TextBox1.Text
        .Item(lig, 5) = TextBox2.Text
        .Item(lig, 6) = TextBox3.Text
        .Item(lig, 7) = TextBox4.Text
        .Item(lig, 8) = TextBox5.Text
        .Item(lig, 9) = TextBox6.Text
        .Item(lig, 10) = TextBox7.Text
      End With
    End With
End If
End Sub

7. Ajoutez cette ligne dans le code Initialize avant le END SUB

Label1 = WorksheetFunction.Max(Sheets("Clients").ListObjects(1).ListColumns(1).DataBodyRange) + 1

Désolé pour le retard de réponse !!

Il me reste une erreur: (et cette fois le vba et le nom de la feuille est identique )

image

Bonjour

Il me reste une erreur: (et cette fois le vba et le nom de la feuille est identique )

oui, exact. Comme vous n'avez qu'un seul tableau structuré sur la feuille, on va au plus simple --> remplacez Tableau1 et les guillemets par le chiffre 1

Rem : pour vous expliquer : lorsque vous créez un tableau structuré, Excel ajoute automatiquement son nom dans le gestionnaire de noms que vous trouvez dans le menu excel --> Formules
tableau 1 que je vous ai donné doit correspondre à un autre nom spécifique qui reprend la plage concernée par le tableau dans la feuille clients.


Alors les feuilles "mois" sont là pour faire le suivi des dépenses et recettes de la boutique de mon amie... Concernant l'onglet "clients" celui-ci servirait à avoir un petit suivi des clients venant en boutique!!

Là vous devez supprimer toutes les lignes vides. Il ne faut pas laisser de lignes sans données dans un tableau structuré.Exemple pour janvier supprimez les lignes 10 à 205.
Pour ajouter les totaux au bas de chaque tableau des feuilles mois, cliquez dans le tableau puis allez dans le menu Excel "Création tableau" et cochez la case "Total".
Ensuite rendez-vous en fin de tableau, cliquez dans la dernière ligne (là où vous devez voir le total" et choisir "Somme" dans la liste déroulante

Crdlt

Rechercher des sujets similaires à "activation auto useform vba"