Sauvegarde depuis Userform

J'aurais une petite question,

je me débrouille bcp avec la base de Vba, mais quand vient le temps d'utiliser le dictionnaire et tout les Ubound etc, je m'y perds royalement

comme par exemple:

 Set MonDico = CreateObject("Scripting.Dictionary")
    ' Pour chaque valeur vérifier si ce n'est pa sun doublon
    For Ind = LBound(TabVal) To UBound(TabVal)
      If TabVal(Ind, 1) <> "" Then MonDico(TabVal(Ind, 1)) = ""
    Next Ind
    ' Effectuer le tri
    TmpKeys = MonDico.keys
    Call TriNoms(TmpKeys, LBound(TmpKeys), UBound(TmpKeys))

J'y comprends RIEN

souvent sur ce forum quand j'ai demandé de l'aide, on m'a aidé avec ce type de code, pourtant je m'y perds encore.

Y'aurait-il quelque part des videos youtube tutoriel qui m'apprendrais??

car les docs microsoft pour moi, sont dure a comprendre

Re,

J"ai mis la dernière version du fichier dans mon post précédent

Je ne connais pas de tuto à ce sujet

Mais un dictionnaire ne peut contenir de doublon, c'est pour cette raison qu'on l'utilise dans les combo

LBound() récupère la 1ère position d'un tableau

UBound() récupère la dernière position d'un tableau

J'espère que cela pourra t'aider un peu

@+

Merci pour les réponses et merci pour le fichier!

Pour la cbx_année

au fond le but est de choirir préalablement une année, et quand dans la cbx_nomclt s'affichent les résultats pour l'année sélectionnée.

c'est donc sur

Private Sub Cbx_Année_Change()

End Sub

qu'il faudrait produire quelque chose .....

Pour l'instant tous les résultats se retrouvent dans la cbx_nomclt .. ce qui est l'inverse du résultat que je veux avoir .. je veux plutôt réduire le nombre de choix dans la cbx_nomclt .......

Cependant au risque de me répeter, merci beaucoup.

Je vais tenter de modifier moi-même le code, mais étant donné ton niveau de codage, je ne suis pas certain de réussir, je vais quand même tenter le coup, puis je t'en donnerai des nouvelles!!

Merci et @ bientôt!

J'ai bien peur d'Avoir besoin de recourir encore à vos prouesses.

Dans mon Usf_Saisie_initialize

j'ai plutot opté pour

 Dim J As Long

    With Me.Cbx_Année
        For J = 3 To Sheets("EnrUSF").Range("DA" & Rows.Count).End(xlUp).Row
            .AddItem Sheets("EnrUSF").Range("DA" & J)
        Next J
        End With

Afin d'alimenter la cbx_année .. question d'avoir seulement les années antérieures et l'année actuelle

lors de l'enregistrement je vais récupérer les 4 premiers caracteres de la textbox qui contient la date .. puis la valeur de la textbox qui contient le nom du client, je vais les envoyer en valeur de cbx_nomclt et cbx_annee .. de cette facon j'enregistrer des valeurs dans ces controles avant de les envoyer sur la feuille EnrUSF ... j'ajouterais aussi une textbox. je m'arrangerai pour ne pas qu'une modification change la date de création .. ca je sais faire

Pour le reste

j'ai recherché des parcelles de code sur ce forum en essayant de les modifier mais je n'y arrive toujours pas .. j'en suis la pour le moment

Private Sub Cbx_Année_Change()
Dim ligne As Integer
    Me.Cbx_NomClt.Clear
    If Me.Cbx_Année.ListIndex = -1 Then Exit Sub
    ligne = Me.Cbx_Année.ListIndex + 3
 'il resterait à remplir ici ..........
 je continue de fouiller
    End With

End Sub

Bonsoir,

Avec ce code trop "simplissime", tu auras des doublons

 Dim J As Long
     With Me.Cbx_Année
        For J = 3 To Sheets("EnrUSF").Range("DA" & Rows.Count).End(xlUp).Row
            .AddItem Sheets("EnrUSF").Range("DA" & J)
        Next J
        End With

Bonsoir,

Avec ce code trop "simplissime", tu auras des doublons

 Dim J As Long
     With Me.Cbx_Année
        For J = 3 To Sheets("EnrUSF").Range("DA" & Rows.Count).End(xlUp).Row
            .AddItem Sheets("EnrUSF").Range("DA" & J)
        Next J
        End With

J'ai bien appris de vous mr. Bruno et j'ai ajouter une instance de dictionnaire selon vos explications

'################
     Dim enr As Worksheet
     Dim dico As Object
    Dim cle, Valeur
    Dim i As Long
    Set enr = Sheets("EnrUSF")
    Set dico = CreateObject("Scripting.Dictionary")

    For i = 3 To fapc.Range("DA" & Rows.Count).End(xlUp).Row
        cle = enr.Range("DA" & i)
        Valeur = ""
          If Not dico.Exists(cle) Then
            dico.Add cle, Valeur
          End If
    Next i
    Cbx_Année.List = Application.Transpose(dico.Keys)

    Set enr = Nothing
    Set dico = Nothing
     '/###############

Vous m'avez clairement expliqué qu'un dictionnaire éliminait les doublons ..

J'appprends vite, on doit juste m'expliquer longtemps!!

Re,

J'ai bien appris de vous mr. Bruno et j'ai ajouter une instance de dictionnaire selon vos explications

'################
     Dim enr As Worksheet
     Dim dico As Object
    Dim cle, Valeur
    Dim i As Long
    Set enr = Sheets("EnrUSF")
    Set dico = CreateObject("Scripting.Dictionary")

    For i = 3 To fapc.Range("DA" & Rows.Count).End(xlUp).Row
        cle = enr.Range("DA" & i)
        Valeur = ""
          If Not dico.Exists(cle) Then
            dico.Add cle, Valeur
          End If
    Next i
    Cbx_Année.List = Application.Transpose(dico.Keys)

    Set enr = Nothing
    Set dico = Nothing
     '/###############

Vous m'avez clairement expliqué qu'un dictionnaire éliminait les doublons ..

J'appprends vite, on doit juste m'expliquer longtemps!!

Très très bien

Bon désolé, de mon côté j'ai bossé un peu

A l'ouverture de l'USF_Saisie, je parcours la feuille "EnrUSF" pour récupérer les années sans doublon

Au changement d'année, l'inscrit les non pour qui le Tbx_Date est dans l'année choisie

A+

Merci je suis sur mon iPhone, je test dès que possible!

Merci 1000 fois

Super!

j'ai opté pour "Left" au lieu de Right

    ' Pour chaque ligne récupérée l'année
    For Lig = 3 To dLig
      Ind = Ind + 1
      ReDim Preserve TabVal(Ind)
      TabVal(Ind) = Left(.Cells(Lig, ColF).Value, 4)
    Next Lig
  End With

du coup ca me donne par année et non par mois-jour ..

MErci 5874 fois

Re,

Chez moi les dates sont enregistrées au format "jj/mm/aaaa" c'est pour ça

Je comprends mieux maintenant

Re,

Tu as un office English

Bien étant donné que les tutos d'excel mais aussi de plusieurs autres logiciels sont plus présents en anglais sur la toile , ca doit bien faire 15-16 ans que mes logiciels ainsi que mon windows est en anglais ...

AUSSI pour les troubleshoot de windows etc

Re,

Ok c'est une façon de voir

Mais ceci explique bien notre inversion de date

Rechercher des sujets similaires à "sauvegarde userform"