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 :

Userform, Listbox et selection multiple [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    GESTIONNAIRE
    Inscrit en
    Novembre 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : GESTIONNAIRE
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2016
    Messages : 30
    Points : 26
    Points
    26
    Par défaut Userform, Listbox et selection multiple
    Bonjour à tous
    Voilà mon problème, dans un cadre associatif, j'essaie de créer un petit module (userform) en vba pour effectuer le rapprochement bancaire
    En gros, j'ai un tableau dans lequel j'identifie des remboursements avec pour certain chèque plusieurs opérations, ici le n°0000656 qui regroupe 2 lignes ou 2 remboursements si vous préférez.
    Dans ma listbox1 de mon userform, j'ai réussi à afficher la liste des chèques NON ENCAISSES et leur somme globale (qui reprend donc la somme de toutes les opérations du chèque), en revanche là ou je séche c'est quand je veux selectionner un numéro de chèque et appuyer sur le bouton ENCAISSE du Userform, ici par exemple toujours le 0000656 pour que le code aille lire dans le tableau et affecter la valeur ENCAISSE à chaque fois qu'il trouve le ou les numéros de chèques selectionnés dans la listbox1, bon je ne sais pas si je suis très clair.
    En tout cas merci de votre aide
    En PJ le petit fichier Excel correspondant
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    Essayez avec votre code modifié
    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
    Private Sub CommandButton4_Click()
    Dim R As Range
    Dim var As Variant
    Dim k&
    Dim i As Long
     
    Set R = Sheets("BD").UsedRange
    For i = 0 To ListBox1.ListCount - 1
      If ListBox1.Selected(i) = True Then
        MsgBox ListBox1.List(i, 0) & " oui"
      'A partir de là je seche
      'Il faudrait boucler dans la tableau sur la colonne C et si on trouve la valeur selectionnée alors on vient
      ' noter ENCAISSE dans la colonne F et - (valeur de la colonne D) en colonne G
        var = R.Value
        For k& = 1 To UBound(var, 1)
          If CLng(ListBox1.List(i, 0)) = var(k&, 3) Then  ' , 3 est la colonne C
            var(k&, 6) = "ENCAISSE"   ' , 6 est la colonne F
            var(k&, 7) = -var(k&, 4)  ' , 7 est la colonne G     , 4 est la colonne D
            Exit For
          End If
        Next k&
        R = var
      End If
    Next i
     
    LISTE 'on remet la liste a jour
     
    End Sub

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Je ne voulais pas intervenir du fait qu'il fallait ouvrir ton classeur
    lis ma signature et ceci :
    https://www.developpez.net/forums/d8...s-discussions/

    Tu es nouveau ici et je vais donc faire une exception, mais veille dorénavant s'il te plait à observer cette discipline indispensable, si tu veux mon aide.

    Ton problème est le même (avec la même solution) que celui exposé ici (listbox ou listview : peu importe. Seul le mécanisme compte et il est le même) :
    https://www.developpez.net/forums/d1...feuille-excel/
    Voilà
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Ceci étant dit : bien que cela ne soit pas la solution à la question posée, telle que posée, mais plutôt une suggestion de conception différente, je vais te parler de ce que l'on met en général en oeuvre, s'agissant de la détermination des chèques émis et non encaissés.
    - ils n'ont pas à être traités pour autre chose que ce qui les concerne, à savoir si le chèque n'a toujours pas été encaissé. Seul le chèque et son montant sont concernés, que le chèque ait été établi pour un seul ou pour plusieurs paiements.
    Et d'ailleurs, le relevé bancaire que tu reçois ne mentionne rien d'autre, à la rubrique "débits", que le N° du chèque et son montant
    Ta balance comptable, elle, fait apparaître :
    - le solde en espèces
    - le solde en banque conforme au relevé bancaire
    - le total des chèques émis en non encaissés , que tu dois donc déduire du solde bancaire (le relevé bancaire)

    On n'a alors comptablement parlant pas à intervenir sur les écritures comptables à proprement parler.
    Il suffit de procéder ainsi :
    - chèque tiré ? ----> ajout (par code si tu le souhaites ou manuellement sinon) à une liste (peut-être une feuille de calcul réservée à cet effet)
    - chèque encaissé ? -----> suppression de cette liste (par code - via ou non une listbox - si tu le souhaites ou manuellement sinon)
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    GESTIONNAIRE
    Inscrit en
    Novembre 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : GESTIONNAIRE
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2016
    Messages : 30
    Points : 26
    Points
    26
    Par défaut
    Bonjour PMO2017 et merci de ton retour,
    Je viens de tester le code proposé et le code fait son travail, il trouve bien la valeur 0000656 que j'ai selectionné dans ma listbox1, il met à jour mon tableau, jusque là ça va, sauf qu'il le fait mais uniquement pour le premier 0000656 qu'il trouve et pas le deuxième (en effet ce chèque est inscrit 2 fois dans le tableau), est ce que tu aurais une idée ?
    D'avance merci, je continue de creuser en parallèle

    Excellente journée

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    GESTIONNAIRE
    Inscrit en
    Novembre 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : GESTIONNAIRE
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2016
    Messages : 30
    Points : 26
    Points
    26
    Par défaut
    Bonjour Unparia et merci de ta collaboration à ce document qui peut paraître basique mais qui se révèle être un bon cas d'école (enfin à mes yeux) et certainement pas à un expert confirmé comme toi.
    Je vais lire attentivement la discussion du lien que tu m'as communiqué et reviendrai vers toi au besoin si tu le permets
    Excellente journée

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    GESTIONNAIRE
    Inscrit en
    Novembre 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : GESTIONNAIRE
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2016
    Messages : 30
    Points : 26
    Points
    26
    Par défaut
    Bonjour à tous,
    Bon voilà j'ai creusé un peu et suis revenu à des choses basique, du genre lecture d'un tableau ligne à ligne,
    J'ai testé le code suivant et ça tourne, je laisse le code ci-dessous et le fichier en PJ pour ceux que ça peut intéresser
    Merci de votre aide

    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
    Dim i As Integer
    Private Sub CommandButton4_Click()
     
    Dim i As Integer
    Dim j As Integer
    Dim Var As String
    Dim Var2 As String
     
    For i = 0 To ListBox1.ListCount - 1
      If ListBox1.Selected(i) = True Then
       MsgBox ListBox1.List(i, 0) & " oui" ' ici pour information, on affiche la valeur selectionnée de la listbox
       j = 2 ' on initialise la variable J à 2 car les données du tableau débutent à la ligne 2
        While Sheets("BD").Cells(j, 1) <> "" ' on demande à ce que tant qu'il y a qqch de saisi dans la ligne lue de la colonne A alors on boucle
         Var = ListBox1.List(i, 0) ' on récupére la valeur selectionnée de la listbox (attention format texte)
         Var2 = CDbl(Sheets("BD").Cells(j, 3)) ' je décompose mon raisonnement, on recupére au format numérique la valeur de la cellule de la ligne lue de la colonne C
         Var2 = Format(Var2, "0000000") ' on lui affecte un format personnalisé
         Var2 = CStr(Var2) ' et onfin on convertit en chaine de caractère cette valeur pour que le code puisse la comparer à la valeur slectionnée de la listbox
     
                  If Var2 = Var Then ' si la valeur lue de la Colonne C est égale à la valeur selectionnée de la listbox
                  Sheets("BD").Cells(j, 6) = "ENCAISSE" ' on met à jour le tableau avec la valeur encaissé dans la colonne F de la ligne lue
                  Sheets("BD").Cells(j, 7) = -Val(Sheets("BD").Cells(j, 4)) 'idem avec la valeur négative dans la colonne G
                  Sheets("BD").Cells(j, 8) = Sheets("BD").Cells(j, 8) & " " & "Chèque pointé selon relevé du mois de " & ComboBox1.Value & " " & ComboBox2.Value
              End If
     
        j = j + 1 'on passe à la ligne suivante
        Wend
    End If
    Next
    Call FILTRECHEQUESNONENCAISSES 'on remet la liste a jour
    LISTE
     
    End Sub
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Sélection multiple dans une Listbox
    Par Gui13 dans le forum Interfaces Graphiques
    Réponses: 7
    Dernier message: 03/07/2007, 14h59
  2. VB6 - problème avec listbox a selection multiple
    Par captainamerica75 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/05/2007, 15h04
  3. Problème entre 2 listbox à selection multiple
    Par SoaB dans le forum Général JavaScript
    Réponses: 24
    Dernier message: 24/10/2005, 16h05
  4. Réponses: 3
    Dernier message: 03/08/2005, 11h21
  5. [C#]Sauvegarde d'une selection multiple d'une listbox?
    Par onouiri dans le forum ASP.NET
    Réponses: 7
    Dernier message: 29/04/2004, 17h16

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