Déclencher un UserForm plusieurs fois selon une valeur de ComboBox

Bonjour,

Suite à mon premier post hier, j'ai essayé de trouver des éléments de réponse mais je bloque actuellement.

Pour rappel, mon projet est de créer un outil de production à base d'un formulaire qui permet d'automatiser et d'uniformiser la saisie dans le cadre d'organisations de concerts.

J'ai créé un premier UserForm :

capture

Son utilité est de récupérer deux types d'informations, les premières (période et nombre d'artiste) qui servent respectivement à déterminer la feuille dans laquelle les données seront inscrites et à déterminer le nombre de ligne (1 par artiste) qu'il faudra générer. Les secondes (dates de l'événement et type) sont directement inscrites dans la feuille concernée.

Voici le code :

Option Explicit
Dim Ws As Worksheet

Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If ComboBox1.MatchFound = False Then
MsgBox ("La période sélectionnée n'est pas valide")
ComboBox1.Value = ""
End If

End Sub

Private Sub CommandButtonAnnuler_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()

  ComboBox1.AddItem "Janvier/Mars"
  ComboBox1.AddItem "Festival"
  ComboBox1.AddItem "Avril/Juillet"
  ComboBox1.AddItem "Septembre/Décembre"

  ComboBox2.AddItem "1"
  ComboBox2.AddItem "2"
  ComboBox2.AddItem "3"
  ComboBox2.AddItem "4"
  ComboBox2.AddItem "5"

  ComboBox3.AddItem "39 - FESTIVAL"
  ComboBox3.AddItem "40 - ACCOMPAGNEMENT"
  ComboBox3.AddItem "41 - DIFFUSION"
  ComboBox3.AddItem "42 - STUDIOS"

End Sub

Private Sub CommandButtonSuivant_Click()
Dim L As Integer

If ComboBox1.Value = "Janvier/Mars" Then
L = Sheets("Jan-Mars").Range("a65536").End(xlUp).Row + 1 'Va sur la dernière ligne NON VIDE
ElseIf ComboBox1.Value = "Festival" Then
L = Sheets("Festival").Range("a65536").End(xlUp).Row + 1
ElseIf ComboBox1.Value = "Avril/Juillet" Then
L = Sheets("Avril-Juil").Range("a65536").End(xlUp).Row + 1
Else: L = Sheets("Sept-Déc").Range("a65536").End(xlUp).Row + 1
End If

Range("A" & L).Value = ComboBox3 'Insère la donnée de la liste déroulante dans la colonne A
Range("B" & L).Value = TextBox1 'Insère la donnée de la textbox1 dans la colonne B

UF1.Hide
UF2.Show

End Sub

Deux problèmes se posent à moi sur celui-ci :

- Malgré mes essais de sélection de la période, la validation du premier UF n'inscrit pas les données dans la bonne feuille, mais dans celle qui est affichée au moment du lancement. Pourtant, j'ai utilisé la commande MatchFound qui permet de forcer l'utilisateur d'utiliser une période renseignée et référencée dans les feuilles.

- Je n'arrive pas à trouver une commande qui pourrait supprimer les données déjà écrites du tableau si l'utilisateur décide d'annuler avant la fin du formulaire.

La grosse problématique que j'ai sur ce projet est la suivante :

J'aimerais que le second UF s'ouvre autant de fois que le nombre d'artistes/groupes renseignés dans le premier UF. Dans l'idée, si l'utilisateur sélectionne 3 artistes, il faudrait que celui-ci s'affiche 3 fois (avec pourquoi pas un mécanisme "Suivant", "Suivant", "Valider") et renseigne les informations sur 3 lignes successives.

capture2

Il faudrait aussi que les informations déjà inscrites, à savoir les Dates et Type d'événement, se dupliquent sur le nombre de lignes concernées par cet événement.

Pour le moment, j'ai simplement essayé de travailler l'UF1 avec la fonction UF1.Hide et UF2.Show qui permet, il me semble, de garder en mémoire les données (notamment L qui détermine l'endroit où la saisie est destinée).

Voici le code que j'ai commencé à réaliser :

Private Sub UserForm_Initialize()

  ComboBox1.AddItem "Cession"
  ComboBox1.AddItem "Engagement"

End Sub
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If ComboBox1.MatchFound = False Then
MsgBox ("Le type de rémunération sélectionné n'est pas valide")
ComboBox1.Value = ""
End If

End Sub

Private Sub CommandButtonAnnuler_Click()
Unload Me
End Sub

Private Sub CommandButtonValider_Click()

Range("C" & L).Value = TextBox1
Range("D" & L).Value = TextBox2
Range("E" & L).Value = ComboBox1
Range("F" & L).Value = TextBox3
Range("G" & L).Value = TextBox4
Range("H" & L).Value = TextBox5
Range("I" & L).Value = TextBox6
Range("J" & L).Value = TextBox7
Range("K" & L).Value = TextBox8

End Sub

Je ne sais pas vraiment par où continuer, je suis preneur de toutes vos remarques et conseils ! Je joins le document de travail à ce sujet.

Merci d'avance pour votre temps et à bientôt,

Martin

Bonjour toutes et tous

@Martin

sur l'initialisation de l'uf1 de la combobox1 ne correspondez-pas au recherche des feuilles lorsque l'on clic sur le bouton suivant de l'uf1

exemple:

Private Sub UserForm_Initialize()

ComboBox1.AddItem "Janvier-Mars" ' incorrecte le nom de la feuille du classeur ne correspond pas !

''''

Private Sub UserForm_Initialize()

ComboBox1.AddItem "Jan-Mars" ' correct puisque la feuille se nomme ainsi

etc...


Private Sub UserForm_Initialize()

  ComboBox1.AddItem "Jan-Mars"
  ComboBox1.AddItem "Festival"
  ComboBox1.AddItem "Avril-Juil"
  ComboBox1.AddItem "Sept-Déc"

  ComboBox2.AddItem "1"
  ComboBox2.AddItem "2"
  ComboBox2.AddItem "3"
  ComboBox2.AddItem "4"
  ComboBox2.AddItem "5"

  ComboBox3.AddItem "39 - FESTIVAL"
  ComboBox3.AddItem "40 - ACCOMPAGNEMENT"
  ComboBox3.AddItem "41 - DIFFUSION"
  ComboBox3.AddItem "42 - STUDIOS"

End Sub

le bouton de commande

un petit bout de code, merci à Job75

Private Sub CommandButtonSuivant_Click()
Dim Sh As Worksheet
On Error Resume Next
Dim L

Set Sh = Sheets(ComboBox1.Value)
If Err Then MsgBox "Feuille introuvable", 48: ComboBox1.DropDown: Exit Sub 'en cas d'entrée manuelle incorrecte
On Error GoTo 0
Sh.Visible = True 'en cas de feuille masquée
Sh.Activate
'--------------suite du code de validation

If ComboBox1.Value = "Jan-Mars" Then
L = Sheets("Jan-Mars").Range("a65536").End(xlUp).Row + 1 'Va sur la dernière ligne NON VIDE
Range("A" & L).Value = ComboBox3 'Insère la donnée de la liste déroulante dans la colonne A
Range("B" & L).Value = TextBox1 'Insère la donnée de la textbox1 dans la colonne B

ElseIf ComboBox1.Value = "Festival" Then
L = Sheets("Festival").Range("a65536").End(xlUp).Row + 1
Range("A" & L).Value = ComboBox3 'Insère la donnée de la liste déroulante dans la colonne A
Range("B" & L).Value = TextBox1 'Insère la donnée de la textbox1 dans la colonne B

ElseIf ComboBox1.Value = "Avril-Juil" Then
L = Sheets("Avril-Juil").Range("a65536").End(xlUp).Row + 1
Range("A" & L).Value = ComboBox3 'Insère la donnée de la liste déroulante dans la colonne A
Range("B" & L).Value = TextBox1 'Insère la donnée de la textbox1 dans la colonne B
Else: L = Sheets("Sept-Déc").Range("a65536").End(xlUp).Row + 1
End If

Range("A" & L).Value = ComboBox3 'Insère la donnée de la liste déroulante dans la colonne A
Range("B" & L).Value = TextBox1 'Insère la donnée de la textbox1 dans la colonne B

UF1.Hide  '  Attention !  la l'uf1 est caché mais non déchargé 
UF2.Show   ' la on affiche  l'uf2
End Sub

ci-joint

note: je n'ai pas tout regarder

peut-être pour réinitialiser les variables de l'usf (@voir pas certain)

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

End

End Sub

crdlt,

André

Bonjour,

La feuille jan-mars est en tableau structuré. Il ne faut donc pas prévoir les lignes à l'avance (comme je le vois dans le fichier posté par MartinRL) et pour l'ajout de ligne utiliser les instructions Listobjects et databodyrange.item(), plutot que de chercher la dernière ligne avec cette instruction qui peut poser souci

L = Sheets("Jan-Mars").Range("a65536").End(xlUp).Row + 1 'Va sur la dernière ligne NON VIDE

Cordialement

Bonjour et merci beaucoup pour vos réponses !

@Andre13 : effectivement, l'initialisation fonctionne beaucoup mieux comme ça, merci pour le bout de code !

Je pensais utiliser la fonction UnloadMe à la validation du second UF ce qui fermerait et viderait celui-ci ? Je ne l'ai pas encore codé étant donné que le stockage des données de l'UF2 ne fonctionne pas encore. Qu'en pensez-vous ?

@Dan : J'ai créé un tableau structuré en première feuille pour faire un essai. Dans la version finale, deux des colonnes correspondront à la SACEM et le CNV qui sont des calculs proportionnels à certains éléments du tableau, il me semblait plus simple de créer un tableau structuré pour qu'elles se dupliquent automatiquement à l'ajout d'une ligne. Qu'en dites-vous ?

Je vais me renseigner sur ces deux instructions, merci du conseil !

Avez-vous des idées de résolution sur la question inhérente à l'ouverture de l'UF2 en fonction du nombre choisi dans la ComboBox de l'UF1 ?

@Dan : J'ai créé un tableau structuré en première feuille pour faire un essai. Dans la version finale, deux des colonnes correspondront à la SACEM et le CNV qui sont des calculs proportionnels à certains éléments du tableau, il me semblait plus simple de créer un tableau structuré pour qu'elles se dupliquent automatiquement à l'ajout d'une ligne. Qu'en dites-vous ?

Effectivement et je vous conseille de travailler de cette manière d'autant que c'est un concept plus moderne et qui ne nécessite pas mettre en forme de votre tableau à l'avance comme vous l'avez fait dans votre fichier.

Dans le cadre des tableaux structurés, les instructions d'ajout ne nécessitent pas de savoir quelle est la dernière ligne. Il suffit d'ajouter une ligne au tableau structuré existant.

Certes cela change l'approche au niveau code mais cela est nettement plus facile pour la mise en page qui est faite automatiquement. Pour démarrer votre fichier, vous avez uniquement besoin de la ligne 1 pour les titres et de la ligne 2 vide de données.

Afin d'éviter les confusions, je laisse André13 continuer avec vous sur ce projet. Inutile d'y être à deux mais je lirai la suite des propositions bien entendu.

@Dan : Merci pour ces éléments de réponse ! Et merci aussi pour le conseil sur les instructions d'ajout, je vais simplement essayer d'ajouter une ligne de code qui me permet de séparer les concerts par une ligne vide !

Je pense que j'ai trouvé une autre manière de résoudre mon problème.
Je pourrais créer 5 ou 6 UserForms avec des multipages qui me permettent d'avoir 1 onglet dans le cas où l'utilisateur renseigne 1 artistes etc... Qu'en pensez-vous ?

J'ai une autre question : j'aimerais qu'en bas de tableau, les totaux des chaque colonne soient calculés automatiquement (via des formules) et décaler vers le bas l'ensemble. Cela implique donc que je ne peux pas simplement utiliser l'ajout de ligne, qui la mettrait sous le total ?
Avez-vous une idée de résolution ?

Merci encore pour votre temps et votre aide précieuse !
Martin

@Dan : Merci pour ces éléments de réponse ! Et merci aussi pour le conseil sur les instructions d'ajout, je vais simplement essayer d'ajouter une ligne de code qui me permet de séparer les concerts par une ligne vide !

Là c'est pas une bonne idée du tout de faire cela dans un tableau structuré. D'ailleurs dans toute base de données, il faut éviter les lignes vides. Vous risquez de rencontrer des soucis lors de l'exploitation des données

Pour le reste, André13 suit certainement votre fil. je présume qu'il va vous répondre.

Bonjour toutes et tous

Coucous et merci Dan pour ces conseils, je bloque sur un truc* (*ajouter via l'usf 1 au tableau2 à la feuille Jan-mars du classeur)merci d'avance de l'aide apporté


Je prend exemple sur la feuille Jan-Mars du classeur

@MartinRL, est-ce qu'avec l'exemple de la feuille Jan-Mars( tableau structuré) , avec pour chaque colonne somme/moyenne etc ?

@MartinRL (voir image ci-dessous ou sur ce classeur ci-joint exemple)

@Dan l'usf1 est à remodeler car , cela ne s'ajoute pas correctement à la suite du tableau2 mais, en dehors du tableau2 de la feuille Jan-mars

et moi, je bug grave sur ce côté là

ci-joint exemple,

ztest77777

Exemple sur l'image ci-dessus,

l'encadré rouge :c'est lorsque j'ajoute dans le formulaire usf1, il s'est placé automatiquement en dessous du Tableau2 de la feuille Jan-Mars alors qu'il aurai du se placer sur la ligne 4 et bien entendu la ligne des totaux descendrai automatiquement

pour les rectangles verts : lui c'est ok,

crdlt,

André

@Dan l'usf1 est à remodeler car , cela ne s'ajoute pas correctement à la suite du tableau2 mais, en dehors du tableau2 de la feuille Jan-mars

@Andre13 : J'aurais plutot fait ceci dans le code Valider

Private Sub CommandButtonSuivant_Click()
Dim lig As Integer
Dim F As Worksheet

Select Case ComboBox1.ListIndex + 1
    Case Is = 1: Set F = Feuil1 'Janvier/Mars
    Case Is = 2: Set F = Feuil2 'Festival
    Case Is = 3: Set F = Feuil3 'Avril-Juil
    Case Is = 4: Set F = Feuil4 'Sept-Dec
End Select

With Worksheets(ComboBox1.ListIndex + 2).ListObjects("Tableau" & ComboBox1.ListIndex + 1)
    If .ListRows.Count = 0 Then
        .ListRows.Add: lig = 1
    Else: .ListRows.Add: lig = .ListRows.Count
    End If
    .DataBodyRange.Item(lig, 1) = ComboBox3 'evenement
    .DataBodyRange.Item(lig, 2) = TextBox1 'date

End With

UF1.Hide
UF2.Show
End Sub

En partant du fichier posté par Martin, Il y a toutefois deux conditions à respecter :
1. Hormis la feuille formulaire, chacune des feuilles doit être mise en forme sous tableau structuré.
2. Le nom des tableaux structurés doit être : Tableau1 pour la feuille Jan-Mars, Tableau2 pour la feuille Festival, Tableau3 pour la feuille Avril-Juil et Tableau4 pour la feuille sept-dec

Une fois les deux points réalisés, il faut que le tableau structuré démarre en ligne 2. Pour partir du "bon pied" (si des données ont été enregistrées pour des tests), le mieux est de sélectionner manuellement la ligne 2 puis faire "Supprimer" dans le menu.

Si souci dis moi

Re,

oki Dan D'accord merci , je suis tes conseils

Je n'avais pas vu ton fichier André, mais je viens de tester, cela fonctionne.

Attention à mes remarques sans quoi, cela va buguer. Il faut absolument que les tableaux soient bien nommé. Actuellement il n'y a qu'une tableau nommé Tableau2. renomme le Tableau1 pour tester.

Edit : lol! je me suis toujours demandé pourquoi 13 dans ton nom, mais je viens de comprendre en voyant ton profil

Re, Dan

@Dan

oui tout a fait, je viens de lire ton post et je me suis aperçu que ces 2 Userforms 1 et 2 , l'une on la cache l''UF1 (Hide) ok elle prend l'info mais sur la pratique du code c'est vraiment chaud, puisqu'il faut faire appel à la seconde userform UF2 du coup je ne sais plus taper de la tête arf !

bon voila, le schmilblick de grosses erreurs subsistes encore et, je n'arrive pas à coïncider ces 2 usfs (faut-il vraiment faire 2 usfs ne serait-il pas mieux d'en faire qu'un est unique ? merci d'avance

j'avais pensé au multipage mais, le demandeur snif! n'en veut pas, je ne sais plus quoi faire à présent, je bloque grave au secours, heeeeeellllp

  1. a : j'ai mis correctement les noms des Tableau1, 2, 3 et 4 sur chaque onglets
  1. b : sur le UF1 j'ai regroupé les textbox de l'uf2 et la combo4
  • c: il y a le formatage des textbox à revoir lors, du transfert sur le(s) onglet(s)
  • @Dan oui mon pseudo Andre13 , exact13 pour BDR et pur Marseillais de chez Marseillais l'accent et tout le tralala lol -;)

merci d'avance Dan, si tu peux me remettre dans le bon chemin car là, c'est la catastrophe pour moi

crdlt,

André

@André13 : ok André je vais relire sa demande puis regarder ton fichier

Edit : il y a un truc que l'on peut supprimer dans UF1, ce sont les deux déclaration de variable. elles ne servent plus

Dim Ws As Worksheet
Public maVariable As Variant

Dans sa demande, Martin dit ceci

J'aimerais que le second UF s'ouvre autant de fois que le nombre d'artistes/groupes renseignés dans le premier UF. Dans l'idée, si l'utilisateur sélectionne 3 artistes, il faudrait que celui-ci s'affiche 3 fois (avec pourquoi pas un mécanisme "Suivant", "Suivant", "Valider") et renseigne les informations sur 3 lignes successives.

Je pense qu'il faudrait savoir si quand il y a 2 ou plusieurs groupes ou artistes, les frais et rémunérations ne sont pas identiques. Je peux imaginer que oui, et de là je comprends sa pensée d'avoir deux userforms (bien que à éviter à mon avis et possible à éviter).

A titre d'exemple. Si on deux groupes
- le type d'événement est identique ?
- Quid des frais et rémunération ? identique ou pas par rapport à l'événement ?

Autre question : la combobox "type rémunération" doit comporter quoi ?

Bonjour Dan et André,

Avant de répondre à vos interventions, merci beaucoup des conseils !
J'aichangé de fusil d'épaule, j'ai créé plusieurs UF (allant jusqu'à 5) avec des Multipages qui permettent d'éviter de générer un nombre d'UF consécutifs en fonction du nombre d'artistes choisis. Là, l'UF1 fait appel à un UF défini en fonction de la valeur saisie, beaucoup plus simple !

@Andre13 : Merci beaucoup pour le test ! Effectivement je bloque aussi sur le point du retour à la ligne... Cependant, c'est vraiment ça dans l'idée !

@MartinRL, est-ce qu'avec l'exemple de la feuille Jan-Mars( tableau structuré) , avec pour chaque colonne somme/moyenne etc ?

Je me servirai uniquement de la somme, je n'aurai pas besoin de moyenner sur ce tableau là (éventuellement sous un export pour analyser les chiffres mais ce sera dans un autre document).

@Dan :

Là c'est pas une bonne idée du tout de faire cela dans un tableau structuré. D'ailleurs dans toute base de données, il faut éviter les lignes vides. Vous risquez de rencontrer des soucis lors de l'exploitation des données

Je ne savais pas du tout, alors je laisse tomber l'idée des lignes blanches ! Avez-vous une idée concernant un "séparateur" qui permettrait de bien distinguer les concerts ?

En partant du fichier posté par Martin, Il y a toutefois deux conditions à respecter :

1. Hormis la feuille formulaire, chacune des feuilles doit être mise en forme sous tableau structuré.

2. Le nom des tableaux structurés doit être : Tableau1 pour la feuille Jan-Mars, Tableau2 pour la feuille Festival, Tableau3 pour la feuille Avril-Juil et Tableau4 pour la feuille sept-dec

Une fois les deux points réalisés, il faut que le tableau structuré démarre en ligne 2. Pour partir du "bon pied" (si des données ont été enregistrées pour des tests), le mieux est de sélectionner manuellement la ligne 2 puis faire "Supprimer" dans le menu.

Si souci dis moi

J'ai bien suivi les indications et inséré le code, à priori les données s'inscrivent au bon endroit !

Cependant, je n'arrive pas à faire en sorte que plusieurs lignes correspondant au nombre d'artistes soient générées, avec des critères communs en début de ligne (date, type). Avez-vous des idées de résolution ? Je suis en train de retravailler le code, je vous enverrai une version claire dès que possible.

Merci et à plus tard !

Martin

Oups je n'avais pas vu vos réponses !

@Andre13 :

budget-2021-auto-test004.xlsm (59.06 Ko)

Sur cette version, l'insertion des lignes comptabilisées dans le total directement semble bien fonctionner ! Merci :) Cependant, ce n'est pas très pratique car il faudra faire de la saisie groupe par groupe et donc re-saisir plusieurs informations comme la date et le type. D'ailleurs, dans ce format là, il n'est plus déterminant de renseigner le nombre de groupes, si ?

@Dan :

A titre d'exemple. Si on deux groupes

- le type d'événement est identique ?

- Quid des frais et rémunération ? identique ou pas par rapport à l'événement ?

Autre question : la combobox "type rémunération" doit comporter quoi ?

Effectivement je n'ai pas été très clair sur ce point.

L'idée de l'outil est de dissocier les artistes/groupes d'un même événement afin de traiter séparément leurs données ! Dans l'exemple d'un concert (diffusion), la date et le type d'événement doivent rester les mêmes pour les artistes car c'est un seul événement.

Les frais de rémunération, catering, restauration et hébergement sont toujours différents entre chaque artiste, d'où l'intérêt d'avoir des lignes spécifiques pour avoir une traçabilité :)

La ComboBox "Type de rémunération" doit proposer le choix entre "Cession" et "Engagement" qui sont les deux moyens que l'on utilise pour rémunérer les artistes.

Edit : il y a un truc que l'on peut supprimer dans UF1, ce sont les deux déclaration de variable. elles ne servent plus

Dim Ws As Worksheet

Public maVariable As Variant

Effectivement, c'est fait ! Merci :)

@Andre13 : Je viens de comprendre le fonctionnement de l'UF1 que vous m'avez envoyé !
A chaque clic sur le bouton "Valider", il y a une saisie et un ajout de ligne, c'est ça ?
Si oui, ça ne m'arrange pas tellement parce que c'est un outil à destination d'autres utilisateurs et ce n'est pas forcément intuitif... et pas moyen de quitter sans annuler pour le moment ahah !

Mais merci énormément pour les essais, je sens qu'on s'approche de la vérité !

Re,

@Martin oki dac, bon, je ne désespère pas, heu pas trop compris le tout dans son global et sa finalité, je vais relire j'ai du raté deux ou trois épisodes

j'ai pensé à un truc pour les artistes et groupes de 1 à 5

soit 1: par message box -input box, si coché 1, 2 , 3, 4 ou 5 de l'UF1 ou voir ci-dessous

soit 2: directement au travers toujours de l'UF1 pour ajouter des frames suivant le choix si, l'option de choix et/ou par la combo la frame en question apparaît 2 les autres frames sont cachés (exemple avec 4 frames mais toutes visibles) après, il serai plus facile pour concaténer les textboxs des noms des artistes et groupes ((c'est un aperçu))

zchoix111

crdlt,

André

@Martin :
Oulàlà, il y en avait de la lecture... mais j'ai compris au vu de vos réponses
Petite question : juste pour être sûr, votre fichier est destiné à être utilisé sous windows ou sur MAC ?

@André :

si tu peux me remettre dans le bon chemin car là, c'est la catastrophe pour moi

1. J'ai modifié le code pour le formatage des données. Vois ci-dessous à remplacer juste en dessous du END SELECT

For i = 4 To 9
   Controls("TextBox" & i).Value = Replace(Controls("TextBox" & i).Value, ",", ".")
Next

With Worksheets(ComboBox1.ListIndex + 2).ListObjects("Tableau" & ComboBox1.ListIndex + 1)
    If .ListRows.Count = 0 Then
        .ListRows.Add: lig = 1
    Else: .ListRows.Add: lig = .ListRows.Count
    End If
    .DataBodyRange.Item(lig, 1) = ComboBox3.Value 'evenement
    .DataBodyRange.Item(lig, 2) = CDate(TextBox1.Value) ', "dd/mm/yyyy") 'date
    .DataBodyRange.Item(lig, 3) = TextBox2.Value 'nom de l'artiste ou du groupe
    .DataBodyRange.Item(lig, 4) = TextBox3.Value 'multiligne [Commentaire/état des négociations]
    .DataBodyRange.Item(lig, 5) = ComboBox4.Value 'Combobox4  [Type de rémunération]
    .DataBodyRange.Item(lig, 6) = TextBox4.Value 'Montant de la rémunération
    .DataBodyRange.Item(lig, 7) = TextBox5.Value  'Frais de restauration
    .DataBodyRange.Item(lig, 8) = TextBox6.Value 'Frais de transport
    .DataBodyRange.Item(lig, 9) = TextBox7.Value 'Frais d'hébergement
    .DataBodyRange.Item(lig, 10) = TextBox8.Value 'Frais de catering
    .DataBodyRange.Item(lig, 11) = TextBox9.Value 'Frais de sécurité
End With
End sub

2. Pour la mention de Martin

A chaque clic sur le bouton "Valider", il y a une saisie et un ajout de ligne, c'est ça ?

Si oui, ça ne m'arrange pas tellement parce que c'est un outil à destination d'autres utilisateurs et ce n'est pas forcément intuitif... et pas moyen de quitter sans annuler pour le moment ahah !

Voici une idée à creuser avec l'USF1, lorsque tu as plusieurs groupes à faire.
1. Creer une variable qui enregistre le nombre de groupes mis dans la combobox.
2. A chaque fois que tu valides, cela enregistre les données et décrémente la variable de 1 unité jusque ce qu'elle soit à zero. Une fois à zéro, on efface automatiquement toutes les rubriques de l'USF. Après la première validation, il faut rendre inaccessible la combobox Nbre de groupe (on évite les erreurs avec la variable dont on a besoin pour effectuer le contrôle) et ce, jusqu'à ce que la variable soit revenue à 0.
3. Si on clique sur ANNULER, il faut qu'avant de fermer l'USF, un message apparait disant que toutes les données n'ont pas été enregistrées et tu ne peux pas sortir de l'USF.

Ton avis ?

Edit :
oups André, tu as posté. Bon je supprime mon post ?? sauf le code ?
En voyant l'USF et les boutons d'option, j'éviterais car cela t'oblige à mettre des controles et codes en plus. L'idée ci-dessus en gardant l'USF1 actuelle. Avec excel on a vite une "usine à gaz" malheureusement

Re,

merci Dan, j'ai corrigé l'UF1, merci ( j'ai juste ajouté la déclaration de la variable i Dim i As Integer )

@Dan ah oui bien vu pour les groupes (par contre la variable combo décrémenter et 0 ,,,,,,, là tu m'as coulé, je sors ma bouée

en attente .... MartinRL

crdlt,

André

Rechercher des sujets similaires à "declencher userform fois valeur combobox"