Bonjour,
en PJ, le document qui me permet d'ajouter des agents, de vérifier la liste des agents et de supprimer des agents et cela fonctionne.
Cependant, j'aurais souhaité lorsque je clique sur le bouton de la feuille 1 et que mon userform s'ouvre et reste sur la feuille 1 et non basculer sur la feuille 2 actuellement et en gardant les mêmes fonctionnalités actuelles.
Merci pour votre soutien
bonne journée.
Farid
Bonjour Farid,
Un essai en PJ. Il faut supprimer tous les Sheets("Feuil2").select.
Vous pouvez utiliser l'instruction With End with. Par exemple :
VB:
Private Sub UserForm_initialize()
'Liste collaborateur
With Sheets("Feuil2")
For N = 1 To .Range("a65536").End(xlUp).Row
ComboBox24.AddItem .Range("a" & N)
Next N
'Supprime'
For N = 1 To .Range("a65536").End(xlUp).Row
ComboBox23.AddItem .Range("a" & N)
Next N
'Fin supprime'
Me.Left = Application.Left + Application.Width / 2 - Me.Width / 2
Me.Top = Application.Top + Application.Height / 2 - Me.Height / 2
End With
End Sub
Le "." devant les range signifie qu'on utilise la feuille déclarée dans le with.
J'ai modifié toutes les macros mais vérifiez bien.
Utilisez l'indentation, ça rend le code beaucoup plus lisible.
bonjour
efface tout le code de ton userform et met celui ci
VB:
'patricktoulon
Private Sub Btn_Ajouter_Click()
If Len(Me.Txt_nom) = 0 Then
MsgBox "Veillez remplir les champs obligatoirs avec une étoile (*)"
Me.Txt_nom.SetFocus
Else
Sheets("Feuil2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = Me.Txt_nom
Me.Txt_nom = ""
Sheets("Feuil2").Range("A:A").Sort Key1:=Sheets("Feuil2").Range("A1")
razcomb
End If
End Sub
Private Sub CommandButton3_Click()
Unload Nouveau
End Sub
'supprime'
Private Sub CommandButton7_Click()
Sheets("Feuil2").Range("a" & ComboBox23.ListIndex + 1).EntireRow.Delete
razcomb
End Sub
Private Sub UserForm_initialize()
razcomb
Me.Left = Application.Left + Application.Width / 2 - Me.Width / 2
Me.Top = Application.Top + Application.Height / 2 - Me.Height / 2
End Sub
Sub razcomb()
'Liste collaborateur
With ComboBox24: .Clear: .List = Sheets("Feuil2").Range("A1", Sheets("Feuil2").Cells(Rows.Count, 1).End(xlUp)).Value: End With
'Supprime'
With ComboBox23: .Clear: .List = ComboBox24.List: End With
'Fin supprime'
End Sub
il faut apprendre à travailler avec les object range directement sans select ou activate
inscrit depuis 2016 tu devrais savoir faire c'est le B à BA du vba en Excel
d'autre part apprendre aussi à travailler avec des tableaux structurés c'est un minimum pour ce genre de manœuvre du genre BDD les code en deviennent plus simple a faire et a maintenir
Bonjour Sylvanu, Oneida, Patricktoulon,
merci pour vos retours qui fonctionnent tous. J'adapterai celui avec des éléments de commande que j'utilise actuellement. Bonne journée
Bonjour Farid,
Un essai en PJ. Il faut supprimer tous les Sheets("Feuil2").select.
Vous pouvez utiliser l'instruction With End with. Par exemple :
VB:
Private Sub UserForm_initialize()
'Liste collaborateur
With Sheets("Feuil2")
For N = 1 To .Range("a65536").End(xlUp).Row
ComboBox24.AddItem .Range("a" & N)
Next N
'Supprime'
For N = 1 To .Range("a65536").End(xlUp).Row
ComboBox23.AddItem .Range("a" & N)
Next N
'Fin supprime'
Me.Left = Application.Left + Application.Width / 2 - Me.Width / 2
Me.Top = Application.Top + Application.Height / 2 - Me.Height / 2
End With
End Sub
Le "." devant les range signifie qu'on utilise la feuille déclarée dans le with.
J'ai modifié toutes les macros mais vérifiez bien.
Utilisez l'indentation, ça rend le code beaucoup plus lisible.
Bonjour Sylvanu,
Votre proposition fonctionne très bien sauf que sur la feuille 2 j'ai dans d'autre colonne des informations qui ne doivent pas être modifié lorsque je supprime un agent. Mais uniquement de la colonne A. Dans l'exemple dans la colonne C et D, j'ai des informations et ces deniers se déplace dans autre colonne lorsque je supprime un agent via "Nouveau" ! Y a-t-il possible que l'on supprime unique l'agent désigné sans impacte sur les autres colonnes et aussi, y a-t-il possible que lorsque j'enregistre un nouvel agent que cela commence à partir de la cellule A2 jusqu'à A 99999 et non à partir de la cellule A1 car ce dernier me sert d'entête.
Par avance, merci pour votre retour.
Bonne fin de journée
Bonsoir
comme je l'ai dit plus haut tu t'ennuierais moins avec un Tableau structuré
plus de problème ajouter un nom ou pour deleter sans perdre la ligne
Bonsoir
comme je l'ai dit plus haut tu t'ennuierais moins avec un Tableau structuré
plus de problème ajouter un nom ou pour deleter sans perdre la ligne
Bonjour Patrick
merci pour ces précisions. En faisant quelque manip d'ajout d'agent, ok, mais en supprimant des agents, 1 bug se produit sur l'avant-dernier agent supprimé et ensuite impossible de relancer l'userform 'Nouveau si reste 1 agent ds la liste. Dans le cas immédiat, afin de relancer l'userform Nouveau, il faut minimum 2 agents dans la liste.
Est-il possible que l'on puisse supprimer tous les agents sans bug et de pouvoir lancer "Nouveau" et d'ajouter autant d'agent nécessaire.