Liste déroulante

Bonjour à tous

Dans une liste déroulante créée à partir de « Validation des données » est-il possible de rajouter des données dans la cellule concernée, de trier par ordre alphabétique ces données et de pouvoir effectuer une sélection en saisissant les première lettres.

Amicalement

Bonjour djodjo,

Heuuu... vous pouvez répéter la question

Perso, je n'ai pas compris ce que tu voulais faire exactement soit un peu plus explicite STP

A+

Bonjour à tous,

@Jexcel2fr : je pense que la demande est d'avoir une liste déroulante dynamique mais qui permettrait de mettre tout par ordre alpha automatiquement et de mettre une lettre à la fois pour trouver le mot recherché dans cette liste...

AMHA, @djodjo, la liste déroulante "classique" ne peut le faire mais plutot une liste "controle de formulaire" si j'ai compris...

P.

Bonsoir à tous,

Alors je vais tenter une autre demande :

En B19/B27, j’aimerai avoir une ComboBox Invisible avec :

  • auto‑complétion
  • ajout automatique dans la base DATABASE
  • tri automatique
  • mise à jour immédiate de la liste
  • Merci par avance
  • 4test.xlsm (44.18 Ko)

Bonsoir Djodjo

Voici mon idée, dans DATABASE un TS (Tableau structuré) pour la liste de ce que j'appelle "Type" sous entendu de produits
Dans une colonne j'utilise la fonction TRIER() qui permet de trier les valeurs dans l'ordre

J'ai défini la plage nommée "Choix" avec cette liste trier

Dans FACTURES, dans la plage B19:B27 j'ai mis une validation de donnée sans obligation de valeur trouvée

Cela te permet d'avoir de l'auto-complétion et un ajout automatique avec le code ajouté dans la feuille au cas ou la valeur n'existe pas

J'espère que cela te conviendra

8djodjo-test.xlsm (44.38 Ko)

A+

JExcel2fr,

Super c'est exactement ce que je cherchais. Sans vouloir abuser, lorsque D27 est remplie peut-on faire pour qu'une ligne se rajoute (28,29...)

Re,

Voici avec la modification demandée

10djodjo-test-v2.xlsm (46.72 Ko)

A+

JExcel,

Merci beaucoup pour votre aide. Par contre je viens de m'apercevoir que les calculs des lignes supplémentaires ne sont pas pris en compte. Peut-on résoudre se soucis?

Merci

Djodjo,

Il n'y avait pas de calcul dans le fichier initial, je n'ai donc rien rajouté

Un minimum d'effort SVP je n'ai pas pour habitude de macher le travail pour les autres
Aider oui, mais il serait bien que tu t'impliques un minimum

Surtout que je sais que ce n'est pas pour toi, qui me dit que tu ne vends pas mon travail

Bonne continuation

Pardon effectivement il n'y avait pas de calcul. Il ne me viendrait même pas a l'idée de vendre votre travail. Si j'ai fait cette demande c'est pour mon gendre qui va ouvrir une boucherie. Je vous prie de bien vouloir m'excuser d'avoir créer un doute dans votre esprit.

Sincèrement désolé.

Bonjour,

test pour voir et modifie le code vba dans la feuil1 "FACTURES"

==> Range("B" & dLigFac + 1).Select

==>Par: Range("B" & dLigFac).Select

Slts

Salut djodjo

J'ai compris à cette heure quelle était ton souci, tu aurais été plus explicite il n'y aurait pas eu toute cette discussion

Donc effectivement la dernière ligne de ta formule de sous-total ne suivait pas, voici le code corrigé, qui insère une ligne juste avant la dernière, ce qui permet à la formule de ton sous-total de suivre.

Avec une amélioration, je saisi la cellule des quantités de la dernière ligne remplie au niveau désignation

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Tbl As ListObject
  Dim Valeur As String
  Dim dLigFac As Long
  '
  If Target.CountLarge > 1 Then Exit Sub
  ' Récupérer la dernière ligne du corps de facture
  dLigFac = Range("LigneRemarques").Row - 1
  'Ne surveille que la plage B19:B & dligfac
  If Not Intersect(Target, Me.Range("B19:B" & dLigFac)) Is Nothing Then
    Valeur = Trim(Target.Value)
    If Valeur = "" Then Exit Sub
    Set Tbl = Worksheets("DATABASE").ListObjects("TsType")
    If Application.CountIf(Tbl.ListColumns(1).DataBodyRange, Valeur) = 0 Then
      Tbl.ListRows.Add.Range.Cells(1, 1).Value = Valeur
    End If
    ' Vérifier si dernière ligne atteinte
    If Target.Row = dLigFac Then
      If MsgBox("La dernière ligne du cops de la facture est atteinte," & vbCrLf _
              & "Voulez-vous en ajouter une ?", vbQuestion + vbYesNo, "AJOUTER 1 LIGNE...") = vbYes Then
        Application.EnableEvents = False
        ' Copier la ligne au dessus de la dernière remplie (évite les bordures)
        Rows(dLigFac - 1).EntireRow.Copy
        ' L'insert à la dernière ligne
        Rows(dLigFac - 1).Insert Shift:=xlDown
        ' Copier la nouvelle dernière ligne
        Range("B" & dLigFac + 1 & ":D" & dLigFac + 1).Copy
        ' Colle uniquement les valeurs/formules sur la ligne du dessus
        Range("B" & dLigFac).PasteSpecial xlPasteFormulas
        ' Efface la nouvelle dernière ligne
        Range("B" & dLigFac + 1 & ":D" & dLigFac + 1).ClearContents
        ' Sélectionen la cellule C pour saisir la quantité
        Range("C" & dLigFac).Select
        Application.EnableEvents = True
      End If
    End If
  End If
  ' Celluel E4
  If Not Intersect(Target, Range("E4")) Is Nothing Then
    If Range("E4").Value <> "" Then
      Call GetClientData(Range("E4").Value)
    End If
  End If
End Sub

A+

Je vous remercie tous les deux pour votre aide, mais je viens de m'apercevoir que j'avais d'autres soucis avec le faite de rajouter automatiquement de nouvelles lignes. Alors je vais resté avec un tableau d'article allant jusqu'à D34.

Je m'excuse de vous avoir dérangé pour rien, vraiment désolé

Rechercher des sujets similaires à "liste deroulante"