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 :

comptabiliser et recherche d'une valeur spécifique sans doublons [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Employé
    Inscrit en
    Août 2017
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Août 2017
    Messages : 32
    Points : 27
    Points
    27
    Par défaut comptabiliser et recherche d'une valeur spécifique sans doublons
    Bonjour à toutes et à tous,

    Je bloque actuellement sur un code qui devrait pourtant être évident

    J'utilise un formulaire pour l'enregistrement d'une commande dans une base de données Excel.
    Celui-ci vérifie préalablement le statut de la commande et de son numéro de ligne (existante ou nouvelle).

    Un code_suite (numéro ID) est généré automatiquement après validation du formulaire.
    Le code_suite est composé du n° de la commande + n° de ligne (000) + incrémentation (0000)

    Afin de mieux comprendre le système mis en place, voici un exemple :

    Code_suite
    218015550010001 FOREUSE
    218015550020001 MARTEAU BLANC
    218015550020002 MARTEAU BLANC
    218015550030001 PERCEUSE JAUNE
    218015550030002 PERCEUSE JAUNE
    218015550030003 PERCEUSE JAUNE

    Nous avons donc 6 enregistrements dans cette commande composée de 3 numéros de lignes.

    Avec un nb.si, j'arrive facilement à afficher la quantité d'enregistrements (6) de la commande introduite.
    Par contre, je n'arrive pas à afficher la quantité de lignes de la commande (3).

    Pourriez-vous m'éclairer ?

    Je vous en remercie d'avance

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Employé
    Inscrit en
    Août 2017
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Août 2017
    Messages : 32
    Points : 27
    Points
    27
    Par défaut
    Bonjour à toutes et à tous,

    Comme demandé, voici ci-joint le fichier concerné.

    Le formulaire USF_CMD permet de vérifier le statut d'une commande (nouvelle ou existante).

    Si la commande est existante, je cherche le moyen d'afficher tous les enregistrements relatifs à celle-ci dans la listbox "LB_LISTE".

    La base de données a été créée dans un tableau nommé "TABLEAU". Normalement, celui-ci devrait contenir +/- 50.000 lignes.

    Dans mon exemple, les enregistrements des 2 commandes sont consécutifs. Quid si ils ne le sont pas ?

    Merci à vous pour votre aide précieuse !

    INV_TABLEAU6 - Copie.xlsm

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    A adapter
    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 TB_CMD_Change()
    Dim c As Range, PlageDeRecherche As Range
    Dim Valeur_Cherchee As String, Prem As String
    Dim i As Long
     
    Me.TB_CMD.BackColor = &H80000003
    If Len(Me.TB_CMD) = 8 Then
        Valeur_Cherchee = Me.TB_CMD.Value
        Set PlageDeRecherche = Sheets("BD").ListObjects("TABLEAU").ListColumns(5).Range
        Set c = PlageDeRecherche.Find(Valeur_Cherchee, LookIn:=xlValues, LookAt:=xlWhole)
        If Not c Is Nothing Then
            Prem = c.Address
            Do
                With Me.LB_LISTE
                    .AddItem
                    .List(i, 0) = c.Value    'code suite
                    .List(i, 1) = c.Offset(, 2).Value    'Dénomination
                    .List(i, 2) = c.Offset(, 6).Value    ' fournisseur
                    .List(i, 3) = c.Offset(, 9).Value    'PUTVAeuro
                    Set c = PlageDeRecherche.FindNext(c)
                    i = i + 1
                    DoEvents
                End With
            Loop While Not c Is Nothing And c.Address <> Prem
            Set c = Nothing
        End If
        Set PlageDeRecherche = Nothing
    Else
        Me.LB_LISTE.Clear
    End If
    End Sub

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Employé
    Inscrit en
    Août 2017
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Août 2017
    Messages : 32
    Points : 27
    Points
    27
    Par défaut
    Merci pour ton code mercatog !

    Ça fonctionne parfaitement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/07/2016, 12h46
  2. [XL-2007] Recherche d'une valeur ou mot spécifique dans une feuille
    Par XceSs dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 14/08/2011, 19h51
  3. [VBA] Recherche d'une valeur dans un autre fichiers puis
    Par Nicos77 dans le forum Général VBA
    Réponses: 11
    Dernier message: 24/03/2006, 12h24
  4. Réponses: 40
    Dernier message: 24/02/2006, 15h19
  5. [D6] Recherche d'une valeur dans un fichier
    Par Lung dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2005, 09h26

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