IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Numérotation automatique sur mon userforme a partir d'une feuil de données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 116
    Par défaut Numérotation automatique sur mon userforme a partir d'une feuil de données
    Bonjour a tous

    Je cherche a modifier ma macro car avant je l'utiliser pour générer sur une textbox présente sur mon userform des numéros en automatique a partir d'une feuil excel.

    voila mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Private Sub UserForm_Initialize()
        Dim Li&, LiDonnees&, ColDonnees&, i& 'long
        Dim ValeurCherchee$ ' string
        Dim Doublon As Boolean
     
        Li = 0: LiDonnees = 4: ColDonnees = 1
        ComboBox1.Clear
            Do Until Cells(LiDonnees, ColDonnees).Value = Empty
                'Tester doublon
                Doublon = False
                ValeurCherchee = Cells(LiDonnees, ColDonnees).Value
                    For i = 0 To ComboBox1.ListCount - 1
                            If ComboBox1.List(i, 0) = ValeurCherchee Then
                                ComboBox1.List(i, 1) = Cells(LiDonnees, ColDonnees + 4).Value
                                Doublon = True
                                Exit For
                            End If
                    Next
                    If Not Doublon Then
                        ComboBox1.AddItem Cells(LiDonnees, ColDonnees).Value
                        ComboBox1.List(ComboBox1.ListCount - 1, 1) = Cells(LiDonnees, ColDonnees + 4).Value
                    End If
                LiDonnees = LiDonnees + 1
            Loop
     
       TextBox1.Value = ""
       TextBox2.Value = ""
       'ComboBox1.Clear
       ComboBox2.Clear
     
     
       With ComboBox2
       For i = 1 To 12
            .AddItem i
        Next
     
       End With
     
    End Sub
    => je voudrais que ma macro qui pouvais sortir le dernier numero de la ligne puissent ignorer les cellules vides .

    Merci beaucoup

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Une piste si tu veux éviter les doublons, le dictionnaire est parfait pour ça. Ici, le code évite les cellules vides. Pour l'exemple, la plage est sur la colonne A de la feuille active, adapte à tes besoins :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    Sub UserForm_Initialize()
     
        Dim Dico As Object
        Dim Plage As Range
        Dim Cel As Range
     
        Set Dico = CreateObject("Scripting.Dictionary")
     
        With ActiveSheet
     
            Set Plage = .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp))
     
        End With
     
        For Each Cel In Plage
     
            If Cel.Value <> "" Then
     
                If Dico.exists(Cel.Value) = False Then Dico.Add Cel.Value, Cel.Value
     
            End If
     
        Next Cel
     
        ComboBox1.List = Dico.Keys
     
        'ou ceci-dessous car clé et valeur de la clé sont ici identiques
        'ComboBox1.List = Dico.Items
     
    End Sub

Discussions similaires

  1. [XL-2003] Focus sur mon Userform
    Par Stutak dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/05/2016, 20h55
  2. Réponses: 8
    Dernier message: 26/06/2015, 18h24
  3. Réponses: 5
    Dernier message: 09/02/2014, 14h32
  4. Numérotation automatique sur une requête union
    Par ALEX80800 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 18/01/2012, 18h13
  5. valeur convertie automatiquement par mon userform?!
    Par swissmade dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/08/2007, 10h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo