[VB] Soucis pour coder sous VB

Résolu
Bonjour, je souhaiterais quelques précision concernant mon soucis du moment sur excel:

Pour faire simple, j'ais à ma disposition un classeur excel fournit de 2 feuilles.

A partir de la saisi de numéro sur la première feuille ( sur les lignes A2 à A11 ) sortir les fournitures associées aux numéros ( les fournitures étant entrées au préalable sur la seconde feuille du classeur )

Par exemple, pour le numéro 1, les fournitures 1, 2 et 5 lui sont associés.

En feuille 1 j'ais deux colonnes, N° article en A et l'état de l'article ( VRAI ou FAUX ) en B.
En feuille 2 j'ais deux colonnes aussi, A pour le N° de l'article et B pour les fournitures associées à cet article.

Mon problème ce situe au niveau du passage de la feuille 1 à la 2, car une fois que j'ai saisi le numéro je ne vois pas comment basculer sur la feuille 2 et "lire" les fournitures qui lui sont associés.

Par exemple, quand je "sélectionne" l'article numéro 1 ( que j'ais codé via VB par un système de case à cocher ) je souhaiterais avoir sur la feuille 2, sur la colonne qui suit celle des fournitures, le mot "VRAI" activé devant les fournitures associé à l'article 1, et par exemple mettre tout les autres à "FAUX" par défaut ( ils passeraient alors à "VRAI" lorsque l'article qui lui est associé serait coché )

J'espère avoir été clair, n'hésitez pas à me demander quelques précisions si besoin :)
Configuration: Windows Vista
Firefox 3.0.8

30 réponses

Résumé de la discussion

Le problème porte sur deux feuilles d’un classeur Excel (Articles et Fournitures) où la saisie d’un numéro sur Articles doit afficher les fournitures associées sur Fournitures et activer les états VRAI/FAUX. Des propositions évoquent une macro qui lit les fournitures liées à l’article sélectionné, puis écrit VRAI dans la colonne correspondante et FAUX ailleurs. Plusieurs échanges portent sur le déclenchement, le lien entre les cases à cocher et le nom d’article, ainsi que l’extension du système à davantage d’articles. En pratique, les solutions reposent sur l’identification par numéro, la récupération des codes de fournitures dans la colonne B et une boucle qui ajuste VRAI/FAUX selon chaque ligne.

Bobot (l’IA à votre service)
  1. N'oublie pas de mettre ton premier post en résolu et ravi de t'avoir aider.

    A bientôt pour la suite ...
    1. J'ais testé le lien, la boucle se fait nickel, c'était à ça que je souhaitais arriver, merci !

      Je pensais faire une feuille de BDD de fourniture pure ( une colonne pour fourniture, une autre pour son prix associé ) extraire les prix et les injecter dans la feuille Fournitures ( qui renseigne quelles fournitures sont associé à tel article ) pour ensuite faire une macro sur cette dernière afin de faire le calcul des prix mais ça merdouille un peu pour le moment.

      Je posterais ici ( et de manière plus claire! ) si jamais je m'en sors pas, mais je vais d'abord chercher par moi même :)

      Encore merci et bonne soirée, tu m'a vraiment bien dépanné !
      1. Le changement de case "cochable" fonctionne à merveille :)

        Par contre aucune trace du nouveau fichier :s
        1. Quand tu l'as collé, clic droit, format de controle, onglet controle, modifier cellule liée

          nouveau fichier avec modification, permettant d'ajouter des articles sans modifier la boucle for i....
          1. Ok. l'ennui pour l'instant c'est que si je copie colle une case à cocher, lorsque j'en coche une, l'autre se coche automatiquement ( par exemple je copie la case à cacher de l'article 10 et la colle en article 11, si je coche la 10 la 11 se met automatiquement, et vice versa ) J'vais voir en les mettant manuellement si ça fonctionne :)

            Merci de ta disponibilité :)
            1. il y a beaucoup beaucoup de lignes de code

              Non il n'y a que ça d'utile:
              Dim i As Integer
              Dim j As Integer
              
              j = 2
              For i = 2 To 11
                 While Val(Worksheets("Fournitures").Cells(j, 2).Value) = Val(Right(Cells(i, 2).Value, Len(Cells(i, 2).Value) - 7))
                  Worksheets("Fournitures").Cells(j, 4).Value = Cells(i, 3).Value
                  j = j + 1
                  Wend     
              Next i

              Par contre, avec ta macro, m'est il possible d'augmenter le nombre d'article sans pour autant perturber son exécution? 

              Ben.. c'est là le problème , mais j'y travaille.
              en attendant si tu rajoutes des articles:
              -il faut modifier : for i= 2 to N° de la ligne du dernier article
              -il faudra qu'il s'appelle articlexx et qu'en feuille fournitures on trouve en colonne N° article :xx
              il faut ,feuille articles, en colonne 'A' faire un copier coller d'une case à cocher pour la mettre face à l'article nouveau en modifiant la cellule liée.

              J'ai une autre version en cours pour une mise à jour individuelle, mais pour le moment il faut cliquer sur l'article pour mettre à jour la case à cocher
              A+

              ( est ce que si je rajoute des articles sous formes de cases à cocher, la macro les prendra elle automatiquement en compte? car c'est une ossature de feuille excel, j'aimerais savoir ou je devrais toucher pour passer de 10 articles à 150 par exemple )
              1. OK ^^
                Que dire, il y a beaucoup beaucoup de lignes de code, ça va être dur de tout comprendre pour moi, mais en tout cas, sur ce que tu a mis la, pour moi c'est exactement ce que je souhaitais !

                Passer par un bouton pour lancer la procédure, ça ne m'avais même pas traversé l'esprit, merci !
                Par contre, avec ta macro, m'est il possible d'augmenter le nombre d'article sans pour autant perturber son exécution? ( est ce que si je rajoute des articles sous formes de cases à cocher, la macro les prendra elle automatiquement en compte? car c'est une ossature de feuille excel, j'aimerais savoir ou je devrais toucher pour passer de 10 articles à 150 par exemple )

                En tout cas un grand MERCI à toi pour le "bouton", c'est génial !
                1. J'ais eu une idée concernant l'exploitation des cases à cocher pour la suite, dis moi si c'est utile ou non:

                  Sub Conversion()
                  
                  For I = 2 To 11
                  
                      If Cells(I, 2) = True Then Cells(I, 4).Value = 1
                      If Cells(I, 2) = False Then Cells(I, 4).Value = 0
                  
                  Next I
                  End Sub


                  Bon après je sais pas si ça peut t'être utile vu mon débutantisme sous VB ^^'
                  1. Oui, il faut se baser sur les numéros, la nomination "article1" etc étant faite uniquement pour le coté esthétique ( et aussi comprendre à quoi ça corespond )

                    Pour le lien entre la case à coché, sachant qu'il y a une colonne avec un test ( VRAI pour coché, FAUX pour non coché ) je pense que ça pourrais permettre de le faire ( avec une condition "si" par exemple )

                    Ou alors créer une colonne avec les noms d'articles, et à ce niveau la supprimer "article1" écrit par la boucle des cases à cocher.
                    1. J'arrive à faire une procédure globale,
                      mais le problème je n'arrive pas à faire le lien entre la case à cocher et la cellule contenant le nom de l'article, donc pour le moment pas d'action par article

                      Par ailleurs les article s'appellent article1 , article2... dans la feuille articles et 1, 2... dans la feuille fournitures; est ce un nom générique pour les tests ; les noms seront-ils différents dans l'utilisation réelle?
                      actuellement je me base sur les numéros, faut-il que je continue dans ce sens? j'attends ta réponse
                      1. Un article à au minimum une fourniture.

                        Pour le lancement, est il possible de la lancer une fois et ensuite de gérer la mise à jour en fonction de ce qu'on coche/décoche dans la feuille article ? ( je sais pas si on peut dire une exécution "dynamique" :s )

                        Merci de m'aider en tout cas :)
                        1. je m'étais orienté sur un boucle :
                          en gros: tant qu'on est sur le même article en feuille fournitures mettre la même valeur qu'en feuille articles

                          ca ne limite pas le nombre de fournitures

                          est ce qu'un article peut ne pas avoir de fourniture?

                          Ca avance sauf la manière de lancer cette procédure
                          1. Le nombre de fourniture sera différent selon l'article, je pensais contourner le problème en fixant ce nombre sur l'article contenant le plus de fourniture, et pour les autres articles mettre un 'false' peut importe l'état de l'article.

                            Pour être plus clair, je pensais faire ceci par exemple:

                            NB max de fourniture:3

                            L'article contient que deux fournitures;

                            Article1 ==> fourniture1 true/false ( géré par la boucle )
                            ==> fourniture2 true/false ( géré par la boucle )
                            ==> fourniture3 false ( imposé car l'article ne comporte pas de 3 ème fourniture )

                            M%ais si tu as une idée plus simple je suis preneur !
                            1. Question importante : le nombre de fournitures associées est-il toujours le même ? si oui combien?
                              1. Les fournitures seront associées une seule fois et de manière manuelle. J'ais édité mon message précédent car en effet j'avais fais une erreur de frappe. ( pour l'aticle 1 c'est bien les fournitures 1,2 et 3 qu'il faut prendre )

                                Il faut donc prendre les données du tableau :)
                                1. Dans un premier temps, il faut que, lorsque je coche la case "article1" dans la feuille "Articles" les fournitures 1,2 et 5 s'activent ( se mettent à "VRAI" ) en colonne D de la feuille "fournitures". Elles se mettront à "FAUX" si la case est décoché.

                                  Comment connaitre les fournitures associées? tu précises pour l'article 1 les fournitures 1,2 et 5, si je regarde dans la feuille "fournitures" les fournitures associées à l'article 1 sont fournitures 1,2 et 3! Faut il prendre les données du tableau

                                  Mais je comprends un peu mieux
                                  A +
                                  1. Ok:
                                    Feuille1=Articles
                                    Feuille2=Fournitures
                                    Les autres feuilles pour le moment ne sont pas à considérer.

                                    Dans un premier temps, il faut que, lorsque je coche la case "article1" dans la feuille "Articles" les fournitures 1,2 et 3 s'activent ( se mettent à "VRAI" ) en colonne D de la feuille "fournitures". Elles se mettront à "FAUX" si la case est décoché.

                                    Ensuite il faut que j'étende ça aux articles 2, 3 et 4 avec leurs fournitures associées ( le numéro de l'article associé est en colonne B de la feuille "fournitures" )

                                    N'hésite pas à me demander de plus amples informations :)

                                    EDIT: Pour la commande "AssocierFourniture" étant débutant je ne peux te répondre, je tente au maximum de me débrouiller avec ce que je trouve sur le forum pour faire marcher le schmilblic..
                                    1. J'ai rien compris .
                                      dans tes explications tu parles de feuille 1 feuille 2, dans ton classeur les deux première feuilles portent un nom différent et la 3ème feuille s'appelle feuil1 !
                                      Pourrais tu ,en termes clairs et concrets, spécifier ton besoin?

                                      Comment est lancer ta sub AssocierFourniture()

                                      A+
                                      1. J'ais testé de poster un nouveau sujet mais je ne vois rien sur mon navigateur, je tente de poser ma question directement à toi ^^'

                                        "Bonjour, je souhaite masquer les lignes d'un tableur contenant "FAUX" dans la colonne D et conserver les lignes contenant VRAI. J'ais tenté de coder ça mais rien ne se passe :s

                                        Dim i As Integer
                                        Dim Compt As Integer
                                        
                                        Compt = 1
                                        
                                        While Cells(Compt, 4).Value <> ""
                                            Compt = Compt + 1
                                        Wend
                                        
                                        
                                        
                                            For i = 2 To Compt - 1
                                                If Cells(i, 4) = "FAUX" Then Rows(i).Hidden = True
                                                If Cells(i, 4) = "VRAI" Then Rows(i).Hidden = False
                                               
                                            Next i


                                        Le while étant la car je n'ais pas de nombre de ligne prédéfinis, mais j'suis débutant donc pas sur que j'ai bien compris :s
                                        Cordialement,"
                                    • 1
                                    • 2