Bonjour (me revoilà ),
Débutante en VBA, je viens vers vous car j'ai conçu un petit programme qui décidément n'en fait qu'à sa tête (ou se paye la mienne).
Pour des raisons de confidentialité, je ne peux pas mettre mon fichier.
Mon fichier est sensé faire les choses suivantes :
J'ai 1 userfom avec plusieurs combobox,
le but est de soit remplir une fiche agent soit de la modifier via la combobox9 qui est une liste déroulante ou encore supprimer cette fiche.
puis un tri par ordre alphabétique est fait et la combobox9 se rafraichi
le soucis est que quand j'ajoute un agent puis le modifie, à un moment donnée
le programme ne me modifie pas l'agent
puis quand j'insiste, en réessayant, il me rajoute un agent en bas en laissant plusieurs ligne vide
de plus ma combobox9 au lieu d'être rafraîchi, parfois elle additionne les agents.
Je sollicite votre aide une fois de plus pour m'aider à résoudre mon soucis
'*****************************************************************************************************************************************************
'2) FONCTION QUI PERMET DE TRIER LES TABLEAUX DANS LES DIFFERENTES FEUILLES
'*****************************************************************************************************************************************************
Sub trier_tableau()
'TRIE DE L'ONGLET AGENT (Commence à trier en A2)
Range("A1:I42").Select
ActiveWorkbook.Worksheets("Agents").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Agents").Sort.SortFields.Add Key:=Range("B1:B42"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Agents").Sort
.SetRange Range("A1:I42")
.Header = xlYes 'La propriété Header notamment (.Header = xlYes) confirme bien la présence d'entêtes à ne pas inclure dans le tri.
.MatchCase = False 'La propriété MatchCase (.MatchCase = False) ainsi réglée, permet d'ignorer les différences de casse (Majuscules-Minuscules), dans le tri.
.Orientation = xlTopToBottom
.Apply 'la méthode Apply permet d'appliquer le tri sur le tableau, selon tous les paramètres définis en amont
End With
'TRIE DE L'ONGLET MATERIEL (Commence à trier en A3)
Range("A2:I42").Select
ActiveWorkbook.Worksheets("Matériel").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Matériel").Sort.SortFields.Add Key:=Range("A2:A42"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Matériel").Sort
.SetRange Range("A2:I42")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
'TRIE DE L'ONGLET Véhicule_Agent (Commence à trier en A2)
Range("A1:I42").Select
ActiveWorkbook.Worksheets("Véhicule_Agent").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Véhicule_Agent").Sort.SortFields.Add Key:=Range("A1:A42"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Véhicule_Agent").Sort
.SetRange Range("A1:I42")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
'TRIE DE L'ONGLET DOTATION (Commence à trier en A3)
Range("A2:I42").Select
ActiveWorkbook.Worksheets("Dotation").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Dotation").Sort.SortFields.Add Key:=Range("A2:A42"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Dotation").Sort
.SetRange Range("A2:I42")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
'TRIE DE L'ONGLET HABILITATION (Commence à trier en A3)
Range("A2:I42").Select
ActiveWorkbook.Worksheets("Habilitation").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Habilitation").Sort.SortFields.Add Key:=Range("A2:A42"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Habilitation").Sort
.SetRange Range("A2:I42")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
'TRIE DE L'ONGLET FORMATION (Commence à trier en A3)
Range("A2:I42").Select
ActiveWorkbook.Worksheets("Formation").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Formation").Sort.SortFields.Add Key:=Range("A2:A42"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Formation").Sort
.SetRange Range("A2:I42")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
End Sub
'*****************************************************************************************************************************************************
'3) PROCEDURE DE LA COMBOBOX (liste déroulante)-
' REMPLIR LES CHAMPS DES COMBOBOX (civilité, nom,.....)
'*****************************************************************************************************************************************************
Private Sub ComboBox9_Change()
'Je Remplis les champs de la ComboBox 1 à la ComboBox 8
If ComboBox9.ListIndex = -1 Then Exit Sub
lig = Application.Match(ComboBox9, Feuil3.[B:B], 0) 'renvoye N°ligne
For col = 1 To 8 'on rempli les combox
Controls("ComboBox" & col) = Feuil3.Cells(lig, col)
Next
'Affiche les photos dans la ComboBox9 si la combobox est différente de vide
If ComboBox9.Text <> "" Then
Call Afficher 'appelle la fonction "Afficher"
End If
End Sub
'*****************************************************************************************************************************************************
' => BOUTON
'7) PROCEDURE POUR AJOUTER UN NOUVEL AGENT DANS LA BASE DE DONNEE
'*****************************************************************************************************************************************************
Private Sub BtnAjout_Click()
'DECLARATION DES VARIABLES
Dim V_I As Long ' Variable "V_I" (la variable sert pour le raffraichissemnt de la combobox)
Dim V_K As Long ' Variable nommée "V_K" (la variable sert pour le raffraichissemnt de la combobox)
Dim V_Boite 'variable pour la message Box qui apparaît
'Apparition de la message Box
V_Boite = MsgBox("voulez-vous ajouter une nouvelle fiche agent ?", vbYesNo + vbQuestion, "question")
'Si la combobox 2 est vide la messageBox apparait
If ComboBox1.Value = "" Then
MsgBox ("veuillez remplir le champ : CIVILITE")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox2.Value = "" Then
MsgBox ("veuillez remplir le champ : NOM")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox3.Value = "" Then
MsgBox ("veuillez remplir le champ : PRENOM")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox4.Value = "" Then
MsgBox ("veuillez remplir le champ ")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox5.Value = "" Then
MsgBox ("veuillez remplir le champ : STATUT")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox6.Value = "" Then
MsgBox ("veuillez remplir le champ : N° de Téléphone Portable")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox7.Value = "" Then
MsgBox ("veuillez remplir le champ : N° de Téléphone Bureau")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox8.Value = "" Then
MsgBox ("veuillez remplir le champ : Date de Naissance")
'Sinon si clique sur "oui"
ElseIf V_Boite = vbYes Then
Sheets("Agents").Range("A1").End(xlDown).Offset(1, 0).Value = ComboBox1.Value
Sheets("Agents").Range("B1").End(xlDown).Offset(1, 0).Value = ComboBox2.Value
Sheets("Agents").Range("C1").End(xlDown).Offset(1, 0).Value = ComboBox3.Value
Sheets("Agents").Range("D1").End(xlDown).Offset(1, 0).Value = ComboBox4.Value
Sheets("Agents").Range("E1").End(xlDown).Offset(1, 0).Value = ComboBox5.Value
Sheets("Agents").Range("F1").End(xlDown).Offset(1, 0).Value = Format(ComboBox6.Value, "0#"" ""##"" ""##"" ""##"" ""##")
Sheets("Agents").Range("G1").End(xlDown).Offset(1, 0).Value = Format(ComboBox7.Value, "00"" ""00"" ""00"" ""00"" ""00")
Sheets("Agents").Range("H1").End(xlDown).Offset(1, 0).Value = Format(ComboBox8.Value, "dddd d mmmm yyyy")
Sheets("Matériel").Range("A3").End(xlDown).Offset(1, 0).Value = ComboBox2.Value
Sheets("Matériel").Range("B3").End(xlDown).Offset(1, 0).Value = ComboBox3.Value
Sheets("Véhicule_Agent").Range("A2").End(xlDown).Offset(1, 0).Value = ComboBox2.Value
Sheets("Véhicule_Agent").Range("B2").End(xlDown).Offset(1, 0).Value = ComboBox3.Value
Sheets("Dotation").Range("A3").End(xlDown).Offset(1, 0).Value = ComboBox2.Value
Sheets("Dotation").Range("B3").End(xlDown).Offset(1, 0).Value = ComboBox3.Value
Sheets("Habilitation").Range("A3").End(xlDown).Offset(1, 0).Value = ComboBox2.Value
Sheets("Habilitation").Range("B3").End(xlDown).Offset(1, 0).Value = ComboBox3.Value
Sheets("Formation").Range("A3").End(xlDown).Offset(1, 0).Value = ComboBox2.Value
Sheets("Formation").Range("B3").End(xlDown).Offset(1, 0).Value = ComboBox3.Value
'Mise à jour de la TextBox contenant l'effectif des agents en l'incrémentant
TextEffectif = TextEffectif + 1
'J'appelle la fonction qui permet de trier les tableaux de toutes les feuilles sélectionnées
trier_tableau
'je raffraichis la ComboBox9 avec la liste Nom de la feuille Agents
With Sheets("Agents") 'Agents est le nom de sa feuille
V_I = .Range("B" & Rows.Count).End(xlUp).Row
For V_K = 2 To V_I
ComboBox9.AddItem .Range("B" & V_K).Value ' B est la colonne
Next V_K
End With
'Je vide le champ de la ComboBox intitulée RECHERCHE
ComboBox9 = ""
'Je retourne dans l'onglet "AGENTS"
Sheets("Agents").Activate
'Je fais apparaître une fenêtre avec un message et un bouton OK
MsgBox "Un nouvel agent a été rajouté à la base de données", vbOKOnly + vbInformation
'Sinon si clique sur "non"
Else
If Me.ComboBox9.ListIndex = -1 Then Exit Sub 'On sort si la réponse est non
MsgBox ("La base de données n'a pas été modifié")
End If
End Sub
'*****************************************************************************************************************************************************
' => BOUTON
'8) MODIFICATION DE LA FICHE AGENT
'*****************************************************************************************************************************************************
Private Sub BtnModifierAgent_Click()
'DECLARATION DES VARIABLES
Dim no_ligne As Integer 'Variable qui va définir le numéro de ligne
Dim V_Boite 'variable pour la boite de message qui apparaît
'si la combobox9 est vide le messageBox suivant apparait : "veuillez remplir le champ RECHERCHE PAR NOM"
If ComboBox9 = "" Then
MsgBox ("Veuillez sélectionner l'agent dans le champ : RECHERCHE PAR NOM")
'Apparition de la message Box
Else: V_Boite = MsgBox("voulez-vous modifier la fiche agent ?", vbYesNo + vbQuestion, "question")
'Si la combobox est vide la messageBox apparait
If ComboBox1.Value = "" Then
MsgBox ("veuillez remplir le champ : CIVILITE")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox2.Value = "" Then
MsgBox ("veuillez remplir le champ : NOM")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox3.Value = "" Then
MsgBox ("veuillez remplir le champ : PRENOM")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox4.Value = "" Then
MsgBox ("veuillez remplir le champ ")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox5.Value = "" Then
MsgBox ("veuillez remplir le champ : STATUT")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox6.Value = "" Then
MsgBox ("veuillez remplir le champ : N° de Téléphone Portable")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox7.Value = "" Then
MsgBox ("veuillez remplir le champ : N° de Téléphone Bureau")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox8.Value = "" Then
MsgBox ("veuillez remplir le champ : Date de Naissance")
'Sinon si je clique sur "oui"
ElseIf V_Boite = vbYes Then
'Je modifie les données dans l'onglet AGENTS
Sheets("Agents").Select 'selection de l'onglet Agents
no_ligne = ComboBox9.ListIndex + 2 'la variable = à la valeur de la ComboBox9 à partir de la 2ème ligne c-a-d B2
Cells(no_ligne, 1) = ComboBox1.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne CIVILITE
Cells(no_ligne, 2) = ComboBox2.Value
Cells(no_ligne, 3) = ComboBox3.Value
Cells(no_ligne, 4) = ComboBox4.Value
Cells(no_ligne, 5) = ComboBox5.Value
Cells(no_ligne, 6) = Format(ComboBox6.Value, "00"" ""00"" ""00"" ""00"" ""00")
Cells(no_ligne, 7) = Format(ComboBox7.Value, "00"" ""00"" ""00"" ""00"" ""00")
Cells(no_ligne, 8) = Format(ComboBox8.Value, "dddd d mmmm yyyy")
'Je modifie les données dans l'onglet
Sheets("Matériel").Select 'selection de l'onglet Matériel
no_ligne = ComboBox9.ListIndex + 3 'la variable = à la valeur de la ComboBox9 à partir de la 2ème ligne c-a-d A3
Cells(no_ligne, 1) = ComboBox2.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne NOM
Cells(no_ligne, 2) = ComboBox3.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne PRENOM
Sheets("Véhicule_Agent").Select 'selection de l'onglet Véhicule_Agent
no_ligne = ComboBox9.ListIndex + 2 'la variable = à la valeur de la ComboBox9 à partir de la 2ème ligne c-a-d A2
Cells(no_ligne, 1) = ComboBox2.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne NOM
Cells(no_ligne, 2) = ComboBox3.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne PRENOM
Sheets("Dotation").Select 'selection de l'onglet Matériel
no_ligne = ComboBox9.ListIndex + 3 'la variable = à la valeur de la ComboBox9 à partir de la 2ème ligne c-a-d A3
Cells(no_ligne, 1) = ComboBox2.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne NOM
Cells(no_ligne, 2) = ComboBox3.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne PRENOM
Sheets("Habilitation").Select 'selection de l'onglet Matériel
no_ligne = ComboBox9.ListIndex + 3 'la variable = à la valeur de la ComboBox9 à partir de la 2ème ligne c-a-d A3
Cells(no_ligne, 1) = ComboBox2.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne NOM
Cells(no_ligne, 2) = ComboBox3.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne PRENOM
Sheets("Formation").Select 'selection de l'onglet Matériel
no_ligne = ComboBox9.ListIndex + 3 'la variable = à la valeur de la ComboBox9 à partir de la 2ème ligne c-a-d A3
Cells(no_ligne, 1) = ComboBox2.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne NOM
Cells(no_ligne, 2) = ComboBox3.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne PRENOM
'Je retourne dans l'onglet AGENTS
Sheets("Agents").Select 'selection de l'onglet Agents
'Je fais apparaître une fenêtre avec un message et un bouton OK
MsgBox ("la fiche agent a été modifié")
'J'appelle la fonction qui permet de trier les tableaux de toutes les feuilles sélectionnées
trier_tableau
'je raffraichis la ComboBox 8 avec la liste Nom de la feuille Agents
ComboBox9.List = Feuil3.Range("B2:B" & Feuil3.[A65000].End(3).Row).Value
'Je vide le champs de la ComboBox intitulée RECHERCHE
ComboBox9 = ""
'Sinon si je clique sur "non"
Else 'sinon
If Me.ComboBox9.ListIndex = -1 Then Exit Sub 'On sort si la réponse est non
End If
End If
End Sub
'*****************************************************************************************************************************************************
' => BOUTON
'11) PROCEDURE POUR SUPPRIMER UN AGENT"
'*****************************************************************************************************************************************************
Private Sub BtnSupprimerAgent_Click()
'DECLARATION DES VARIABLES
Dim LigneSelectionne As Integer ''Variable qui définie la ligne sélectionnée
Dim V_Boite 'variable pour la boite de message qui apparaît
'Une fenêtre de confirmation apparaît pour supprimer la fiche d'agent
V_Boite = MsgBox("voulez-vous supprimer la fiche agent ?", vbYesNo + vbQuestion, "question")
'Si je clique sur "oui"
If V_Boite = vbYes Then
'chercher la ligne selectionnée
LigneSelectionne = Me.ComboBox9.ListIndex + 2 'la variable prend la valeur de la ComboBox9 à partir de la 2ème ligne de la colonne B c-a-d B2
If Me.ComboBox9.ListCount >= 0 And LigneSelectionne > 0 Then
Feuil3.Rows(LigneSelectionne).Delete 'se place dans la feuille Agents et supprime la ligne qui est dans la variable "LigneSelectionne"
'Ici je supprime la ligne dans l'onglet MATERIEL
Feuil5.Rows(LigneSelectionne + 1).Delete 'se place dans la feuille Matériel et supprime la ligne qui est dans la variable "LigneSelectionne"
'Ici je supprime la ligne dans l'onglet Véhicule_Agent
Feuil6.Rows(LigneSelectionne + 1).Delete 'se place dans la feuille Véhicule_Agent et supprime la ligne qui est dans la variable "LigneSelectionne"
'Ici je supprime la ligne dans l'onglet DOTATION
Feuil7.Rows(LigneSelectionne + 1).Delete 'se place dans la feuille Dotation et supprime la ligne qui est dans la variable "LigneSelectionne"
'Ici je supprime la ligne dans l'onglet HABILITATION
Feuil8.Rows(LigneSelectionne + 1).Delete 'se place dans la feuille Habilitation et supprime la ligne qui est dans la variable "LigneSelectionne"
'Ici je supprime la ligne dans l'onglet FORMATION
Feuil9.Rows(LigneSelectionne + 1).Delete 'se place dans la feuille Formation et supprime la ligne qui est dans la variable "LigneSelectionne"
'Mise à jour de la TextBox contenant l'effectif des agents (pour ce faire je fais une soustraction)
TextEffectif = TextEffectif - 1
'Mise à jour de la combobox qui correspond à la liste déroulante
ComboBox9.List = Feuil3.Range("B2:B" & Feuil3.[A65000].End(3).Row).Value
'TOUS LES CHAMPS DE L'USERFOM SERONT SUPPRIMES SAUF LA TEXTBOX
ComboBox1 = "" 'Je vide le champs de la ComboBox intitulée CIVILITE
ComboBox2 = "" 'Je vide le champs de la ComboBox intitulée NOM
ComboBox3 = "" 'Je vide le champs de la ComboBox intitulée PRENOM
ComboBox4 = "" 'Je vide le champs de la ComboBox intitulée NNI
ComboBox5 = "" 'Je vide le champs de la ComboBox intitulée STATUT
ComboBox6 = "" 'Je vide le champs de la ComboBox intitulée TEL PORTABLE
ComboBox7 = "" 'Je vide le champs de la ComboBox intitulée TEL BUREAU
ComboBox8 = "" 'Je vide le champs de la ComboBox intitulée DATE DE NAISSANCE
ComboBox9 = "" 'Je vide le champs de la ComboBox intitulée RECHERCHE
'Je fais apparaître une fenêtre avec un message et un bouton OK
MsgBox ("la fiche agent a été supprimé")
'Sinon si je clique sur "non"
Else
If Me.ComboBox9.ListIndex = -1 Then Exit Sub 'On sort
End If
End If
'J'appelle la fonction qui permet de trier les tableaux de toutes les feuilles sélectionnées
trier_tableau
'Je retourne dans l'onglet "AGENTS"
Sheets("Agents").Activate
End Sub
MERCI POUR VOTRE AIDE
Débutante en VBA, je viens vers vous car j'ai conçu un petit programme qui décidément n'en fait qu'à sa tête (ou se paye la mienne).
Pour des raisons de confidentialité, je ne peux pas mettre mon fichier.
Mon fichier est sensé faire les choses suivantes :
J'ai 1 userfom avec plusieurs combobox,
le but est de soit remplir une fiche agent soit de la modifier via la combobox9 qui est une liste déroulante ou encore supprimer cette fiche.
puis un tri par ordre alphabétique est fait et la combobox9 se rafraichi
le soucis est que quand j'ajoute un agent puis le modifie, à un moment donnée
le programme ne me modifie pas l'agent
puis quand j'insiste, en réessayant, il me rajoute un agent en bas en laissant plusieurs ligne vide
de plus ma combobox9 au lieu d'être rafraîchi, parfois elle additionne les agents.
Je sollicite votre aide une fois de plus pour m'aider à résoudre mon soucis
'*****************************************************************************************************************************************************
'2) FONCTION QUI PERMET DE TRIER LES TABLEAUX DANS LES DIFFERENTES FEUILLES
'*****************************************************************************************************************************************************
Sub trier_tableau()
'TRIE DE L'ONGLET AGENT (Commence à trier en A2)
Range("A1:I42").Select
ActiveWorkbook.Worksheets("Agents").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Agents").Sort.SortFields.Add Key:=Range("B1:B42"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Agents").Sort
.SetRange Range("A1:I42")
.Header = xlYes 'La propriété Header notamment (.Header = xlYes) confirme bien la présence d'entêtes à ne pas inclure dans le tri.
.MatchCase = False 'La propriété MatchCase (.MatchCase = False) ainsi réglée, permet d'ignorer les différences de casse (Majuscules-Minuscules), dans le tri.
.Orientation = xlTopToBottom
.Apply 'la méthode Apply permet d'appliquer le tri sur le tableau, selon tous les paramètres définis en amont
End With
'TRIE DE L'ONGLET MATERIEL (Commence à trier en A3)
Range("A2:I42").Select
ActiveWorkbook.Worksheets("Matériel").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Matériel").Sort.SortFields.Add Key:=Range("A2:A42"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Matériel").Sort
.SetRange Range("A2:I42")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
'TRIE DE L'ONGLET Véhicule_Agent (Commence à trier en A2)
Range("A1:I42").Select
ActiveWorkbook.Worksheets("Véhicule_Agent").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Véhicule_Agent").Sort.SortFields.Add Key:=Range("A1:A42"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Véhicule_Agent").Sort
.SetRange Range("A1:I42")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
'TRIE DE L'ONGLET DOTATION (Commence à trier en A3)
Range("A2:I42").Select
ActiveWorkbook.Worksheets("Dotation").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Dotation").Sort.SortFields.Add Key:=Range("A2:A42"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Dotation").Sort
.SetRange Range("A2:I42")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
'TRIE DE L'ONGLET HABILITATION (Commence à trier en A3)
Range("A2:I42").Select
ActiveWorkbook.Worksheets("Habilitation").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Habilitation").Sort.SortFields.Add Key:=Range("A2:A42"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Habilitation").Sort
.SetRange Range("A2:I42")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
'TRIE DE L'ONGLET FORMATION (Commence à trier en A3)
Range("A2:I42").Select
ActiveWorkbook.Worksheets("Formation").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Formation").Sort.SortFields.Add Key:=Range("A2:A42"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Formation").Sort
.SetRange Range("A2:I42")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
End Sub
'*****************************************************************************************************************************************************
'3) PROCEDURE DE LA COMBOBOX (liste déroulante)-
' REMPLIR LES CHAMPS DES COMBOBOX (civilité, nom,.....)
'*****************************************************************************************************************************************************
Private Sub ComboBox9_Change()
'Je Remplis les champs de la ComboBox 1 à la ComboBox 8
If ComboBox9.ListIndex = -1 Then Exit Sub
lig = Application.Match(ComboBox9, Feuil3.[B:B], 0) 'renvoye N°ligne
For col = 1 To 8 'on rempli les combox
Controls("ComboBox" & col) = Feuil3.Cells(lig, col)
Next
'Affiche les photos dans la ComboBox9 si la combobox est différente de vide
If ComboBox9.Text <> "" Then
Call Afficher 'appelle la fonction "Afficher"
End If
End Sub
'*****************************************************************************************************************************************************
' => BOUTON
'7) PROCEDURE POUR AJOUTER UN NOUVEL AGENT DANS LA BASE DE DONNEE
'*****************************************************************************************************************************************************
Private Sub BtnAjout_Click()
'DECLARATION DES VARIABLES
Dim V_I As Long ' Variable "V_I" (la variable sert pour le raffraichissemnt de la combobox)
Dim V_K As Long ' Variable nommée "V_K" (la variable sert pour le raffraichissemnt de la combobox)
Dim V_Boite 'variable pour la message Box qui apparaît
'Apparition de la message Box
V_Boite = MsgBox("voulez-vous ajouter une nouvelle fiche agent ?", vbYesNo + vbQuestion, "question")
'Si la combobox 2 est vide la messageBox apparait
If ComboBox1.Value = "" Then
MsgBox ("veuillez remplir le champ : CIVILITE")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox2.Value = "" Then
MsgBox ("veuillez remplir le champ : NOM")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox3.Value = "" Then
MsgBox ("veuillez remplir le champ : PRENOM")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox4.Value = "" Then
MsgBox ("veuillez remplir le champ ")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox5.Value = "" Then
MsgBox ("veuillez remplir le champ : STATUT")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox6.Value = "" Then
MsgBox ("veuillez remplir le champ : N° de Téléphone Portable")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox7.Value = "" Then
MsgBox ("veuillez remplir le champ : N° de Téléphone Bureau")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox8.Value = "" Then
MsgBox ("veuillez remplir le champ : Date de Naissance")
'Sinon si clique sur "oui"
ElseIf V_Boite = vbYes Then
Sheets("Agents").Range("A1").End(xlDown).Offset(1, 0).Value = ComboBox1.Value
Sheets("Agents").Range("B1").End(xlDown).Offset(1, 0).Value = ComboBox2.Value
Sheets("Agents").Range("C1").End(xlDown).Offset(1, 0).Value = ComboBox3.Value
Sheets("Agents").Range("D1").End(xlDown).Offset(1, 0).Value = ComboBox4.Value
Sheets("Agents").Range("E1").End(xlDown).Offset(1, 0).Value = ComboBox5.Value
Sheets("Agents").Range("F1").End(xlDown).Offset(1, 0).Value = Format(ComboBox6.Value, "0#"" ""##"" ""##"" ""##"" ""##")
Sheets("Agents").Range("G1").End(xlDown).Offset(1, 0).Value = Format(ComboBox7.Value, "00"" ""00"" ""00"" ""00"" ""00")
Sheets("Agents").Range("H1").End(xlDown).Offset(1, 0).Value = Format(ComboBox8.Value, "dddd d mmmm yyyy")
Sheets("Matériel").Range("A3").End(xlDown).Offset(1, 0).Value = ComboBox2.Value
Sheets("Matériel").Range("B3").End(xlDown).Offset(1, 0).Value = ComboBox3.Value
Sheets("Véhicule_Agent").Range("A2").End(xlDown).Offset(1, 0).Value = ComboBox2.Value
Sheets("Véhicule_Agent").Range("B2").End(xlDown).Offset(1, 0).Value = ComboBox3.Value
Sheets("Dotation").Range("A3").End(xlDown).Offset(1, 0).Value = ComboBox2.Value
Sheets("Dotation").Range("B3").End(xlDown).Offset(1, 0).Value = ComboBox3.Value
Sheets("Habilitation").Range("A3").End(xlDown).Offset(1, 0).Value = ComboBox2.Value
Sheets("Habilitation").Range("B3").End(xlDown).Offset(1, 0).Value = ComboBox3.Value
Sheets("Formation").Range("A3").End(xlDown).Offset(1, 0).Value = ComboBox2.Value
Sheets("Formation").Range("B3").End(xlDown).Offset(1, 0).Value = ComboBox3.Value
'Mise à jour de la TextBox contenant l'effectif des agents en l'incrémentant
TextEffectif = TextEffectif + 1
'J'appelle la fonction qui permet de trier les tableaux de toutes les feuilles sélectionnées
trier_tableau
'je raffraichis la ComboBox9 avec la liste Nom de la feuille Agents
With Sheets("Agents") 'Agents est le nom de sa feuille
V_I = .Range("B" & Rows.Count).End(xlUp).Row
For V_K = 2 To V_I
ComboBox9.AddItem .Range("B" & V_K).Value ' B est la colonne
Next V_K
End With
'Je vide le champ de la ComboBox intitulée RECHERCHE
ComboBox9 = ""
'Je retourne dans l'onglet "AGENTS"
Sheets("Agents").Activate
'Je fais apparaître une fenêtre avec un message et un bouton OK
MsgBox "Un nouvel agent a été rajouté à la base de données", vbOKOnly + vbInformation
'Sinon si clique sur "non"
Else
If Me.ComboBox9.ListIndex = -1 Then Exit Sub 'On sort si la réponse est non
MsgBox ("La base de données n'a pas été modifié")
End If
End Sub
'*****************************************************************************************************************************************************
' => BOUTON
'8) MODIFICATION DE LA FICHE AGENT
'*****************************************************************************************************************************************************
Private Sub BtnModifierAgent_Click()
'DECLARATION DES VARIABLES
Dim no_ligne As Integer 'Variable qui va définir le numéro de ligne
Dim V_Boite 'variable pour la boite de message qui apparaît
'si la combobox9 est vide le messageBox suivant apparait : "veuillez remplir le champ RECHERCHE PAR NOM"
If ComboBox9 = "" Then
MsgBox ("Veuillez sélectionner l'agent dans le champ : RECHERCHE PAR NOM")
'Apparition de la message Box
Else: V_Boite = MsgBox("voulez-vous modifier la fiche agent ?", vbYesNo + vbQuestion, "question")
'Si la combobox est vide la messageBox apparait
If ComboBox1.Value = "" Then
MsgBox ("veuillez remplir le champ : CIVILITE")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox2.Value = "" Then
MsgBox ("veuillez remplir le champ : NOM")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox3.Value = "" Then
MsgBox ("veuillez remplir le champ : PRENOM")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox4.Value = "" Then
MsgBox ("veuillez remplir le champ ")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox5.Value = "" Then
MsgBox ("veuillez remplir le champ : STATUT")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox6.Value = "" Then
MsgBox ("veuillez remplir le champ : N° de Téléphone Portable")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox7.Value = "" Then
MsgBox ("veuillez remplir le champ : N° de Téléphone Bureau")
'Si la combobox est vide la messageBox apparait
ElseIf ComboBox8.Value = "" Then
MsgBox ("veuillez remplir le champ : Date de Naissance")
'Sinon si je clique sur "oui"
ElseIf V_Boite = vbYes Then
'Je modifie les données dans l'onglet AGENTS
Sheets("Agents").Select 'selection de l'onglet Agents
no_ligne = ComboBox9.ListIndex + 2 'la variable = à la valeur de la ComboBox9 à partir de la 2ème ligne c-a-d B2
Cells(no_ligne, 1) = ComboBox1.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne CIVILITE
Cells(no_ligne, 2) = ComboBox2.Value
Cells(no_ligne, 3) = ComboBox3.Value
Cells(no_ligne, 4) = ComboBox4.Value
Cells(no_ligne, 5) = ComboBox5.Value
Cells(no_ligne, 6) = Format(ComboBox6.Value, "00"" ""00"" ""00"" ""00"" ""00")
Cells(no_ligne, 7) = Format(ComboBox7.Value, "00"" ""00"" ""00"" ""00"" ""00")
Cells(no_ligne, 8) = Format(ComboBox8.Value, "dddd d mmmm yyyy")
'Je modifie les données dans l'onglet
Sheets("Matériel").Select 'selection de l'onglet Matériel
no_ligne = ComboBox9.ListIndex + 3 'la variable = à la valeur de la ComboBox9 à partir de la 2ème ligne c-a-d A3
Cells(no_ligne, 1) = ComboBox2.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne NOM
Cells(no_ligne, 2) = ComboBox3.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne PRENOM
Sheets("Véhicule_Agent").Select 'selection de l'onglet Véhicule_Agent
no_ligne = ComboBox9.ListIndex + 2 'la variable = à la valeur de la ComboBox9 à partir de la 2ème ligne c-a-d A2
Cells(no_ligne, 1) = ComboBox2.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne NOM
Cells(no_ligne, 2) = ComboBox3.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne PRENOM
Sheets("Dotation").Select 'selection de l'onglet Matériel
no_ligne = ComboBox9.ListIndex + 3 'la variable = à la valeur de la ComboBox9 à partir de la 2ème ligne c-a-d A3
Cells(no_ligne, 1) = ComboBox2.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne NOM
Cells(no_ligne, 2) = ComboBox3.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne PRENOM
Sheets("Habilitation").Select 'selection de l'onglet Matériel
no_ligne = ComboBox9.ListIndex + 3 'la variable = à la valeur de la ComboBox9 à partir de la 2ème ligne c-a-d A3
Cells(no_ligne, 1) = ComboBox2.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne NOM
Cells(no_ligne, 2) = ComboBox3.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne PRENOM
Sheets("Formation").Select 'selection de l'onglet Matériel
no_ligne = ComboBox9.ListIndex + 3 'la variable = à la valeur de la ComboBox9 à partir de la 2ème ligne c-a-d A3
Cells(no_ligne, 1) = ComboBox2.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne NOM
Cells(no_ligne, 2) = ComboBox3.Value 'La variable "no_ligne" prend la valeur du numéro de la ligne concernée dans la feuille "Agents" et copie la ComboBox 1 dans le tableau dans la colonne PRENOM
'Je retourne dans l'onglet AGENTS
Sheets("Agents").Select 'selection de l'onglet Agents
'Je fais apparaître une fenêtre avec un message et un bouton OK
MsgBox ("la fiche agent a été modifié")
'J'appelle la fonction qui permet de trier les tableaux de toutes les feuilles sélectionnées
trier_tableau
'je raffraichis la ComboBox 8 avec la liste Nom de la feuille Agents
ComboBox9.List = Feuil3.Range("B2:B" & Feuil3.[A65000].End(3).Row).Value
'Je vide le champs de la ComboBox intitulée RECHERCHE
ComboBox9 = ""
'Sinon si je clique sur "non"
Else 'sinon
If Me.ComboBox9.ListIndex = -1 Then Exit Sub 'On sort si la réponse est non
End If
End If
End Sub
'*****************************************************************************************************************************************************
' => BOUTON
'11) PROCEDURE POUR SUPPRIMER UN AGENT"
'*****************************************************************************************************************************************************
Private Sub BtnSupprimerAgent_Click()
'DECLARATION DES VARIABLES
Dim LigneSelectionne As Integer ''Variable qui définie la ligne sélectionnée
Dim V_Boite 'variable pour la boite de message qui apparaît
'Une fenêtre de confirmation apparaît pour supprimer la fiche d'agent
V_Boite = MsgBox("voulez-vous supprimer la fiche agent ?", vbYesNo + vbQuestion, "question")
'Si je clique sur "oui"
If V_Boite = vbYes Then
'chercher la ligne selectionnée
LigneSelectionne = Me.ComboBox9.ListIndex + 2 'la variable prend la valeur de la ComboBox9 à partir de la 2ème ligne de la colonne B c-a-d B2
If Me.ComboBox9.ListCount >= 0 And LigneSelectionne > 0 Then
Feuil3.Rows(LigneSelectionne).Delete 'se place dans la feuille Agents et supprime la ligne qui est dans la variable "LigneSelectionne"
'Ici je supprime la ligne dans l'onglet MATERIEL
Feuil5.Rows(LigneSelectionne + 1).Delete 'se place dans la feuille Matériel et supprime la ligne qui est dans la variable "LigneSelectionne"
'Ici je supprime la ligne dans l'onglet Véhicule_Agent
Feuil6.Rows(LigneSelectionne + 1).Delete 'se place dans la feuille Véhicule_Agent et supprime la ligne qui est dans la variable "LigneSelectionne"
'Ici je supprime la ligne dans l'onglet DOTATION
Feuil7.Rows(LigneSelectionne + 1).Delete 'se place dans la feuille Dotation et supprime la ligne qui est dans la variable "LigneSelectionne"
'Ici je supprime la ligne dans l'onglet HABILITATION
Feuil8.Rows(LigneSelectionne + 1).Delete 'se place dans la feuille Habilitation et supprime la ligne qui est dans la variable "LigneSelectionne"
'Ici je supprime la ligne dans l'onglet FORMATION
Feuil9.Rows(LigneSelectionne + 1).Delete 'se place dans la feuille Formation et supprime la ligne qui est dans la variable "LigneSelectionne"
'Mise à jour de la TextBox contenant l'effectif des agents (pour ce faire je fais une soustraction)
TextEffectif = TextEffectif - 1
'Mise à jour de la combobox qui correspond à la liste déroulante
ComboBox9.List = Feuil3.Range("B2:B" & Feuil3.[A65000].End(3).Row).Value
'TOUS LES CHAMPS DE L'USERFOM SERONT SUPPRIMES SAUF LA TEXTBOX
ComboBox1 = "" 'Je vide le champs de la ComboBox intitulée CIVILITE
ComboBox2 = "" 'Je vide le champs de la ComboBox intitulée NOM
ComboBox3 = "" 'Je vide le champs de la ComboBox intitulée PRENOM
ComboBox4 = "" 'Je vide le champs de la ComboBox intitulée NNI
ComboBox5 = "" 'Je vide le champs de la ComboBox intitulée STATUT
ComboBox6 = "" 'Je vide le champs de la ComboBox intitulée TEL PORTABLE
ComboBox7 = "" 'Je vide le champs de la ComboBox intitulée TEL BUREAU
ComboBox8 = "" 'Je vide le champs de la ComboBox intitulée DATE DE NAISSANCE
ComboBox9 = "" 'Je vide le champs de la ComboBox intitulée RECHERCHE
'Je fais apparaître une fenêtre avec un message et un bouton OK
MsgBox ("la fiche agent a été supprimé")
'Sinon si je clique sur "non"
Else
If Me.ComboBox9.ListIndex = -1 Then Exit Sub 'On sort
End If
End If
'J'appelle la fonction qui permet de trier les tableaux de toutes les feuilles sélectionnées
trier_tableau
'Je retourne dans l'onglet "AGENTS"
Sheets("Agents").Activate
End Sub
MERCI POUR VOTRE AIDE