XL 2016 listes déroulantes et filtres

pelerin65

XLDnaute Occasionnel
Bonjour le forum,

Voila, je voudrais créer un fichier Excel.
C'est pour faire des commande de taxis.

Généralement, on a le même hôtel, il arrive qu'il est complet donc déloger dans un autre hôtel,
et là, je dois modifier ma base de données car deux fois la même ville me donne toujours le même hôtel

l'exemple à Lyon,
j'ai les 4 Hôtels différents.
je voudrais dans la première liste "ville" lorsque je choisi "Lyon" dans la liste d'hôtels.
j'ai les quatre choix possibles, j'espère être clair.

je joins un fichier de base, dans l'attente de vous lire, faite attention a vous et a votre santé
merci d avance
 

Pièces jointes

  • Classeur1.xlsx
    22.3 KB · Affichages: 7

ChTi160

XLDnaute Barbatruc
Bonjour pelerin65

Une proposition :
j'ai renommé le Tableau Structuré "t_BDD" Colonnes "C:F"
VB:
'''''''''''''''''''''''''''''''''''''''''''''''
'procedure permetant d'enregistrer dans la base
'''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Cmbajout_Click()
Dim LstR As ListRow
Dim LstObj As ListObject
Set LstObj = Range("t_BDD").ListObject
With LstObj
Set LstR = .ListRows.Add
    With LstR
        .Range(1) = Me.Txtville.Text: Me.Txtville.Text = Empty
        .Range(2) = Me.Txthotel.Text: Me.Txthotel.Text = Empty
        .Range(3) = Me.TxtAdresse.Text: Me.TxtAdresse.Text = Empty
        .Range(4) = Me.Txtcodepostal.Text: Me.Txtcodepostal.Text = Empty
    End With
    With .Sort
         .SortFields.Clear
         .SortFields.Add Key:=LstObj.ListColumns("villes").Range, _
          SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
         .Header = xlYes
         .MatchCase = False
         .Orientation = xlTopToBottom
         .Apply
    End With
End With
End Sub
a voir et a tester !
je n'ai pas traité la vérification de l'existance d'une Nouvelle Saisie en Colonne "A"
Bonne fin de Soirée
Jean Marie (PL160)
 

ChTi160

XLDnaute Barbatruc
Re
Pour compléter et remplacer la procédure du dessus .
Pour le tri de la Colonne "A"
j'ai créer un tableau structuré que j'ai nommé : "t_Lieux"
Code:
'''''''''''''''''''''''''''''''''''''''''''''''
'procedure permetant d'enregistrer dans la base
'''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Cmbajout_Click()
Dim LstR As ListRow
Dim LstObj As ListObject
Set LstObj = Range("t_BDD").ListObject
With LstObj 'avec ce tableau
Set LstR = .ListRows.Add 'on affecte la Ligne ajoutée a la variable
    With LstR 'sur cette Ligne
        .Range(1) = Me.Txtville.Text  'on ajoute la Ville en premiere cellule , sans vider le Control
        .Range(2) = Me.Txthotel.Text: Me.Txthotel.Text = Empty 'Idem en deuxieme cellule
'et l'on vide le Control
        .Range(3) = Me.TxtAdresse.Text: Me.TxtAdresse.Text = Empty  'Idem en troisieme cellule
'et l'on vide le Control
        .Range(4) = Me.Txtcodepostal.Text: Me.Txtcodepostal.Text = Empty 'Idem en quatrieme cellule
'et l'on vide le Control
    End With
    With .Sort 'On va trier
         .SortFields.Clear
         .SortFields.Add Key:=LstObj.ListColumns("villes").Range, _
          SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
         .Header = xlYes
         .MatchCase = False
         .Orientation = xlTopToBottom
         .Apply
    End With
End With
Set LstObj = Range("t_Lieux").ListObject 'on affecte le tableau a la variable
With LstObj 'avec ce tableau
  Set LstR = .ListRows.Add 'on affecte la Ligne ajoutée a la variable
    With LstR 'avec cette Ligne ajoutée
              .Range(1) = Me.Txtville.Text: Me.Txtville.Text = Empty 'on ajoute la Ville en premiere cellule
'et l'on vide le Control
         With LstObj.Sort 'on va trier
              .SortFields.Add LstObj.ListColumns("lieu").DataBodyRange, xlSortOnValues, xlAscending
              .Apply
              .SortFields.Clear
'              .Range.RemoveDuplicates Columns:=1, Header:=xlYes
         End With
    End With
              .Range.RemoveDuplicates Columns:=1, Header:=xlYes 'on supprime les doublons de la colonne des Villes
End With
Set LstObj = Nothing 'on vide la variable
Set LstR = nothing 'on vide la variable
End Sub
Tu regardes , tu testes et tu me dis !
Jean Marie
 
Dernière édition:

pelerin65

XLDnaute Occasionnel
bonjour jean marie,

je viens de modifier mon tableau et ça fonctionne parfaitement, j'avais réussi à bidouiller avec l'aide de l'enregistreur de macro mais là, parfait, plus de bugs

Juste une question,
Dans l'userform, la première textbox ne se vide pas, après validation, il y a une raison ou serait-il possible qu'elle se vide et que l'userform se ferme sans être obligé d'avoir un bouton fermer avec avoir un mgsbox qui confirme le rajout.
merci super taf
 

ChTi160

XLDnaute Barbatruc
Bonjour pelerin65
Normalement le textebox qui contient la ville , ne s'efface qu'en fin de procédure.car il sert deux fois une fois dans la base de données et dans l liste des villes avoir donc chez moi ca fonctionné je vais vérifier( met le code que tu as adapté) .
Dans l'attente
bonne fin de journée
Jean marie (51160) lol
 

pelerin65

XLDnaute Occasionnel
Re
j ai utilisé ce code VBA
'''''''''''''''''''''''''''''''''''''''''''''''
'procedure permetant d'enregistrer dans la base
'''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Cmbajout_Click()
Dim LstR As ListRow
Dim LstObj As ListObject
Set LstObj = Range("t_BDD").ListObject
With LstObj 'avec ce tableau
Set LstR = .ListRows.Add 'on affecte la Ligne ajoutée a la variable
With LstR 'sur cette Ligne
.Range(1) = Me.Txtville.Text 'on ajoute la Ville en premiere cellule , sans vider le Control
.Range(2) = Me.Txthotel.Text: Me.Txthotel.Text = Empty 'Idem en deuxieme cellule
'et l'on vide le Control
.Range(3) = Me.TxtAdresse.Text: Me.TxtAdresse.Text = Empty 'Idem en troisieme cellule
'et l'on vide le Control
.Range(4) = Me.Txtcodepostal.Text: Me.Txtcodepostal.Text = Empty 'Idem en quatrieme cellule
'et l'on vide le Control
End With
With .Sort 'On va trier
.SortFields.Clear
.SortFields.Add Key:=LstObj.ListColumns("villes").Range, _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
End With
Set LstObj = Range("t_Lieux").ListObject 'on affecte le tableau a la variable
With LstObj 'avec ce tableau
Set LstR = .ListRows.Add 'on affecte la Ligne ajoutée a la variable
With LstR 'avec cette Ligne ajoutée
.Range(1) = Me.Txtville.Text: Me.Txtville.Text = Empty 'on ajoute la Ville en premiere cellule
'et l'on vide le Control
With LstObj.Sort 'on va trier
.SortFields.Add LstObj.ListColumns("lieu").DataBodyRange, xlSortOnValues, xlAscending
.Apply
.SortFields.Clear
' .Range.RemoveDuplicates Columns:=1, Header:=xlYes
End With
End With
.Range.RemoveDuplicates Columns:=1, Header:=xlYes 'on supprime les doublons de la colonne des Villes
End With
Set LstObj = Nothing 'on vide la variable
Set LstR = nothing 'on vide la variable
MsgBox " Le nouvelle entrée a bien été enregister dans votre base", vbOKOnly + vbInformation, " CONFIRMATION "
j ai retesté, le premier textbox ne s'efface pas a la validation,
jean luc
 

pelerin65

XLDnaute Occasionnel
re
lorsque je valide un nouvel agent,
il se classe bien
j'ai la colonne H qui se gris et qu'on voit lors de la validation, ça le faisait sur la colonne C mais depuis ton code ca le fait plus ,
surement à cause du code fait par la macro, lors de mes bidouillages.
 

ChTi160

XLDnaute Barbatruc
Bonjour Jean Luc

Ton fichier me rappelle ce que j'ai vécu pendant un peu plus de 39 ans Lol

Je ne comprends pas ce que tu veux dire !
lorsque je valide un nouvel agent, 'Ou quand Comment ?
il se classe bien 'Ou ?
j'ai la colonne H qui se gris et qu'on voit lors de la validation, ça le faisait sur la colonne C mais depuis ton code ca le fait plus , 'Peux tu m'expliquer
surement à cause du code fait par la macro, lors de mes bidouillages. 'quel Code ,quelle macro ?
dans l'attente
Bonne fin de Journée
Jean Marie (51160)
 
Dernière édition:

pelerin65

XLDnaute Occasionnel
Bonjour jean Marie

quand j'ajoute un Nouvel agent après validation, ça donne,
ce problème le faisait en colonne C
mais après tes modifications de code VBA, ça le faisait
ca dois venir de mon code fait avec l'enregistreur de macro.

1661678285403.png
 

ChTi160

XLDnaute Barbatruc
Re
je n'ai rien fait concernant ce userform.
Il me semble que cette liste était dans une feuille a part .
Le fait que cette colonne soit ainsi c'est qu'elle est sélectionnée ,il doit y avoir un select quelque part dans ta procédure.
Il faudrait le code ou un fichier (celui que tu as modifié)
Et J'y regarde des que possible !
Bonne fin de journée
Jean marie
 
Dernière édition:

pelerin65

XLDnaute Occasionnel
voici le code
Private Sub Btnsauvegarde_Click()
Sheets("base").Activate
Range("H1").Select
Selection.End(xlDown).Select
Selection.Offset(1, 0).Select
ActiveCell = Textnom.Value
ActiveCell.Offset(0, 1).Value = Textncp
ActiveCell.Offset(0, 2).Value = Texttel
ActiveCell.Offset(0, 3).Value = Textnumero

Range("TableauAGENTS[listeagents]").Select
ActiveWorkbook.Worksheets("Base").ListObjects("TableauAGENTS").Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("Base").ListObjects("TableauAGENTS").Sort.SortFields. _
Add2 Key:=Range("TableauAGENTS[listeagents]"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Base").ListObjects("TableauAGENTS").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

MsgBox " Le nouvel agent a bien été enregister dans votre base", vbOKOnly + vbInformation, " CONFIRMATION "
End Sub
j espère ne pas trop te déranger avec mes demandes parfois mal formulées
cordialement JLuc
 

pelerin65

XLDnaute Occasionnel
Bonjour le forum,

voilà, j'ai bien avancé sur mon projet.
je me retrouve bloqué à l'enregistrement,
après avoir saisir plusieurs demandes de taxis, sur x nouvelles onglets crées par le bouton "approved" une demande par destination.
une msgbox me demande, si j'ai des demandes faire encore.
si je réponds oui elle fait une raz de la feuille demande afin de faire une nouvelle demande donc l'onglet renommeras avec la cellule G10 +date.

mais si je réponds "NON"
je voudrais copier dans un nouveau classeur, (le nom la cellule G10 et format Date DD-MM-YY) sans l'onglet demande
Dans le classeur original, il efface ses onglets copiées et qu'il me reste que la feuille demande vierge.

j'espère être claire
 

Pièces jointes

  • TAXI7.xlsb
    290 KB · Affichages: 2

pelerin65

XLDnaute Occasionnel
Bonjour le forum,

voilà, j'ai bien avancé sur mon projet.
je me retrouve bloqué à l'enregistrement,
après avoir saisir plusieurs demandes de taxis, sur x nouvelles onglets crées par le bouton "approved" une demande par destination.
une msgbox me demande, si j'ai des demandes faire encore.
si je réponds oui elle fait une raz de la feuille demande afin de faire une nouvelle demande donc l'onglet renommeras avec la cellule G10 +date.

mais si je réponds "NON"
je voudrais copier dans un nouveau classeur, (le nom la cellule G10 et format Date DD-MM-YY) sans l'onglet demande
Dans le classeur original, il efface ses onglets copiées et qu'il me reste que la feuille demande vierge.

j'espère être claire
merci d'avance de votre aide
 

Discussions similaires

Statistiques des forums

Discussions
312 176
Messages
2 085 967
Membres
103 070
dernier inscrit
jujulop