userform à +sieurs entrées

titiborregan5

XLDnaute Accro
Bonjour à tous,
Une nouvelle interrogation m’amène à vous, je ne sais faire que qq petits trucs basics en macro, merci de votre compréhension.

Je souhaiterai créer une boite de dialogue pour me remplacer des champs.
Je m explique :
-Colonne A : Noms des agents (on va dire qu’il y en a 20)
-Colonne B : Mois
-Colonne C : Taux

On part du principe que c’est un semblant de base de données, où lorsque on arrive à la fin des 20 agents pour novembre par ex, ça enchaîne avec les 20 mêmes agents pour décembre, et ainsi de suite.
Le taux ne change que très rarement, et que pour certains agents mais peut être amené à être modifié tout de même.
Ainsi je souhaiterais qu’en cliquant sur un bouton « changer taux », une boite de dialogue apparaisse.
Ainsi on aurait :
Ø Choisissez l’agent pour lequel vous voulez changer le taux (sélection multiple possible ?)
Ø Sélectionnez le ou les mois pour le ou lesquels vous souhaitez changer le taux
Ø Entrez le nouveau taux.

Par exemple, on est en février, on sait que l’agent 5 change de taux au 1er mars donc on clique sur notre bouton, on sélectionne « agent 5 », les mois après le 1er mars donc mars avril mai juin juillet août septembre octobre novembre décembre et le nouveau taux.
Donc toutes les 20 lignes on retombe sur notre agent 5 et on remplace si la case mois correspond à un des mois sélectionné.

J’espère avoir été clair, merci d’avance pour votre aide…

Tibo
 

lanoe

XLDnaute Occasionnel
Re : userform à +sieurs entrées

Bonjour,

Deux petits conseils:
- Va chercher dans les archives du forum il y a plein d'exemple tu pourra au moins commencer un bout de fichier.

- Propose un petit fichier avec un début de projet avec ta question, cela sera plus facile pour t'aider.

Cordialement

lanoe
 

titiborregan5

XLDnaute Accro
Re : userform à +sieurs entrées

Bonjour à tous,
je vous mets en pièce jointe le fichier.
J'ai fait un userform mais les formules je ne sais pas faire.
Je souhaiterai une liste déroulante où l'on peut en cocher plusieurs...

Merci d'avance

ps: mise à jour du bon fichier :d désolé
tibo
 

Pièces jointes

  • modif taux et agent.xls
    42 KB · Affichages: 88
  • modif taux et agent.xls
    42 KB · Affichages: 82
  • modif taux et agent.xls
    42 KB · Affichages: 84
Dernière édition:

titiborregan5

XLDnaute Accro
Re : userform à +sieurs entrées

J'arrive à peu près à faire le userform que je veux mais qq trucs bloquent:
- une liste déroulante avec possibilité de choisir plusieurs entrées (si possible sans faire ctrl) donc peut être qqch à tiquer (genre boite de dialogue mais je ne sais l'intégrer à un bouton)
- sur la base des réponses données précédemment (donc agents et mois) remplacer par le taux rempli ...

Merci de votre aide
 

titiborregan5

XLDnaute Accro
Re : userform à +sieurs entrées

Re,
alors, j'arrive à mettre plusieurs valeurs juste avec un click (j'avais confondu le fmmultiselectmulti et le dmmultiselectextended.
Donc ça s'est rentré dans l'ordre. Par contre j'aimerai bien qu'on puisse voir toutes les propositions (tous les noms d'agents et tous les mois) pour pouvoir les sélectionner (ou au mois 5 ou 6).

Et toujours cette question de formules. je ne sais pas si ce serait un recherchev ou un index ou qqch comme ça...

merci
tibo

ps: voici la dernière version de ma userform
 

Pièces jointes

  • modif taux et agent.xls
    45 KB · Affichages: 69
  • modif taux et agent.xls
    45 KB · Affichages: 70
  • modif taux et agent.xls
    45 KB · Affichages: 69

titiborregan5

XLDnaute Accro
Re : userform à +sieurs entrées

Bonjour,
tout d'abord merci à toi excalibur.
Dans le concept ça me va, c'est exactement ce que je recherchais.
Par contre y a qq petites améliorations que j'aimerais faire mais que je ne sais pas faire.
Je voudrais pouvoir sélectionner plusieurs agents ainsi que plusieurs mois et également les avoir dans l'ordre si possible :rolleyes:

merci encore et merci d'avance :d
 

titiborregan5

XLDnaute Accro
Re : userform à +sieurs entrées

Re le forum,
je souhaite changer les 2 combobox (agents et mois) par des listbox mais je n'y parviens pas.
Je vous joins le fichier, si vous voyez qqch qui cloche lachez vous :D

merci à vous
 

Pièces jointes

  • Copie de modif taux et agent2.zip
    17.2 KB · Affichages: 41

titiborregan5

XLDnaute Accro
Userform problème, comment sélectionner plusieurs valeurs

Bonjour,
je galère pour adapter la formule d'excalibure et j'ai une erreur 380 qui ne me permet pas de lancer mon userform. J'imagine que j'ai pas du faire les bonnes modifs, je suis passé de 2 combobox à 2 listbox.
Je vous mets le fichier joint pour que vous puissiez voir


Merci d'avance

tibo
 

Pièces jointes

  • modif taux et agent.xls
    46 KB · Affichages: 90
  • modif taux et agent.xls
    46 KB · Affichages: 81
  • modif taux et agent.xls
    46 KB · Affichages: 90

bqtr

XLDnaute Accro
Re : userform à +sieurs entrées

Bonjour à tous,

Ton erreur 380 vient du fait que tu charges les listbox de deux façons:

Par code dans la procédure d'initialisation du USF et par la propriété RowSource des listbox.

Remplace tout le code du USF par celui-ci:
Code:
Option Explicit

Private Sub ok_Click()

Dim i As Long, k As Long, m As Long, Tablo

If cbx1.ListIndex = -1 Then
   MsgBox "Sélectionner un élément dans chaque liste .....", vbInformation, "Sélection:"
   Exit Sub
End If

If cbx2.ListIndex = -1 Then
   MsgBox "Sélectionner un élément dans chaque liste .....", vbInformation, "Sélection:"
   Exit Sub
End If

If Textbox1 = "" Then
   MsgBox "Entrer un Taux .....", vbInformation, "Saisie Taux:"
   Exit Sub
End If

Application.ScreenUpdating = False
Tablo = Range("A2:C" & Range("A65536").End(xlUp).Row)
For i = 0 To cbx1.ListCount - 1
   If cbx1.Selected(i) Then
      For k = 0 To cbx2.ListCount - 1
         If cbx2.Selected(k) Then
            For m = 1 To UBound(Tablo, 1)
               If Tablo(m, 1) = cbx1.List(i) And Tablo(m, 2) = cbx2.List(k) Then Tablo(m, 3) = Textbox1
            Next m
         End If
      Next k
   End If
Next i
Range("A2:C" & UBound(Tablo, 1)) = Tablo
Application.ScreenUpdating = True

End Sub

Private Sub Quit_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
cbx1.ListIndex = -1
cbx2.ListIndex = -1
End Sub

J'ai ajouté trois tests pour controler les listbox et le textbox.

A+
 

titiborregan5

XLDnaute Accro
Re : userform à +sieurs entrées

Salut Pierre Olivier,
c'est tout simplement génial! merci beaucoup ça me facilite énormément la tâche... J'espère que tu n'as pas trop "galéré" dessus... J'ai essayé de lire ton code mais je n'y comprends pas grand chose...

En tous cas merci encore, ainsi qu'à Excalibur!
 

bqtr

XLDnaute Accro
Re : userform à +sieurs entrées

Re,

Voici le code du bouton "Valider" commenté :

Code:
Private Sub ok_Click()

Dim i As Long, k As Long, m As Long, Tablo
'Controle si au moins un élément est sélectionné dans la listbox1
'Et affiche un message d'alerte si pas d'élément sélectionné
If cbx1.ListIndex = -1 Then
   MsgBox "Sélectionner un élément dans chaque liste .....", vbInformation, "Sélection:"
   Exit Sub
End If
'Controle si au moins un élément est sélectionné dans la listbox2
'Et affiche un message d'alerte si pas d'élément sélectionné
If cbx2.ListIndex = -1 Then
   MsgBox "Sélectionner un élément dans chaque liste .....", vbInformation, "Sélection:"
   Exit Sub
End If
'Controle si le textbox est renseigné et message d'alerte si il est vide
If Textbox1 = "" Then
   MsgBox "Entrer un Taux .....", vbInformation, "Saisie Taux:"
   Exit Sub
End If
'Géle du rafraichissement de l'écran (accélère légèrement l'éxécution de la macro)
Application.ScreenUpdating = False
'Mise en tableau des éléments de la feuille (3 colonnes A,B,C et 280 lignes de 2 à 281)
Tablo = Range("A2:C" & Range("A65536").End(xlUp).Row)
'Boucle sur les éléments de la listbox1
For i = 0 To cbx1.ListCount - 1
   'Si l'élément est sélectionné
   If cbx1.Selected(i) Then
      'Boucle sur les éléments de la listbox2
      For k = 0 To cbx2.ListCount - 1
         'Si l'élément est sélectionné
         If cbx2.Selected(k) Then
            'Boucle sur les éléments du tablo de la ligne 1 à 280
            For m = 1 To UBound(Tablo, 1)
               'Si l'élement de la 1ère colonne du tableau (l'agent) est le même que celui sélectionné dans la listbox1
               'Et si l'élement de la 2èmè colonne du tableau (le mois) est le même que celui sélectionné dans la listbox2
               'Alors la troisième colonne du tableau (le taux) recoit la valeur du textbox1
               If Tablo(m, 1) = cbx1.List(i) And Tablo(m, 2) = cbx2.List(k) Then Tablo(m, 3) = Textbox1
            Next m
         End If
      Next k
   End If
Next i
'Le tableau est recopié sur la feuille, Uboud(Tablo,1) te donne le nombre de ligne du tableau
Range("A2:C" & UBound(Tablo, 1)) = Tablo
'Dégéle de l'ecran
Application.ScreenUpdating = True

End Sub

Bonne journée
 

Discussions similaires

Réponses
45
Affichages
10 K

Statistiques des forums

Discussions
312 534
Messages
2 089 379
Membres
104 150
dernier inscrit
pape.so