[VB] Soucis pour coder sous VB
Résolu
vash641
Messages postés
40
Date d'inscription
Statut
Membre
Dernière intervention
-
vash641 Messages postés 40 Date d'inscription Statut Membre Dernière intervention -
vash641 Messages postés 40 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- [VB] Soucis pour coder sous VB
- Vb - Télécharger - Langages
- Vb cable - Télécharger - Audio & Musique
- Application pour apprendre à coder - Guide
- Comment coder son whatsapp - Guide
- Vb editor - Télécharger - Langages
30 réponses
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
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
Dis moi si ça va !
https://www.cjoint.com/?exg6dhbUwW
pour ta dernière proposition : on fait une boucle donc on ne traite pas 1 article.
https://www.cjoint.com/?exg6dhbUwW
pour ta dernière proposition : on fait une boucle donc on ne traite pas 1 article.
Ah oui j'ai oublié de coller le lien:
la version telle qu'annoncée:https://www.cjoint.com/?exjP6KNp7V
une autre version:https://www.cjoint.com/?exjOfkQsWr
la version telle qu'annoncée:https://www.cjoint.com/?exjP6KNp7V
une autre version:https://www.cjoint.com/?exjOfkQsWr
je n'ai pas vraiment le temps de sortir un code comme ca mais je vais aiguiller tes recherces
- quand tu selectionne ton produit il faut deja que ds la feuille le cellule en question puis etre sélectionner
- trouver le moyen de découper les valeurs présentes dans ta colonne B pour pouvoir enregistré dans des variables différentes (exemple si tu as ds le cellule B 1,2,5 il faut enregistrer 1 2 et 5 séparement ds des variables genre $var1, $var2 etc.....)
- une fois c'est valeur récuperer, passer sur la feuille 2
- faire alors une boucle sur toutes les lignes de ton tableau. utilisé une condition SI pour verifier si ton produit est présent ou pas. en admettons que tu as enregistré les différentes fournitures dans des variables ($var1,$var 2....) tu aura a peu près ca pour la premiere ligne (si b1=$var1 or b1=$var c1 = "vrai" else c1="faux")
- quand tu selectionne ton produit il faut deja que ds la feuille le cellule en question puis etre sélectionner
- trouver le moyen de découper les valeurs présentes dans ta colonne B pour pouvoir enregistré dans des variables différentes (exemple si tu as ds le cellule B 1,2,5 il faut enregistrer 1 2 et 5 séparement ds des variables genre $var1, $var2 etc.....)
- une fois c'est valeur récuperer, passer sur la feuille 2
- faire alors une boucle sur toutes les lignes de ton tableau. utilisé une condition SI pour verifier si ton produit est présent ou pas. en admettons que tu as enregistré les différentes fournitures dans des variables ($var1,$var 2....) tu aura a peu près ca pour la premiere ligne (si b1=$var1 or b1=$var c1 = "vrai" else c1="faux")
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci pour ton aiguillage ;)
J'ais séparé les différentes fournitures comme suit sur la seconde feuille:
A B C
1 fourniture1 VRAI
1 fourniture2 VRAI
1 fourniture5 VRAI
2 fourniture3 FAUX
Le 2 indiquant que je ne suis plus dans l'article 1 mais le second, l'état indiquant que l'article 1 est coché, mais pas le second.
J'ais utilisé la commande =Feuil1!B2 pour recopier l'état de chaque articles sur la seconde feuille, ne sachant pas la syntaxe sous VB pour spécifier que je souhaite copier l'état de la cellule d'état ( VRAI ou FAUX ) de la feuille 1 dans une cellule de la feuille 2.
J'ais séparé les différentes fournitures comme suit sur la seconde feuille:
A B C
1 fourniture1 VRAI
1 fourniture2 VRAI
1 fourniture5 VRAI
2 fourniture3 FAUX
Le 2 indiquant que je ne suis plus dans l'article 1 mais le second, l'état indiquant que l'article 1 est coché, mais pas le second.
J'ais utilisé la commande =Feuil1!B2 pour recopier l'état de chaque articles sur la seconde feuille, ne sachant pas la syntaxe sous VB pour spécifier que je souhaite copier l'état de la cellule d'état ( VRAI ou FAUX ) de la feuille 1 dans une cellule de la feuille 2.
dans le cas de ta présentation dans ton code vb il faut faire une boucle sur la 1ere feuille pour lire chaque ligne et stocker ds des variables chaque fournitures pour lesquels l'article et 1
L'ennui c'est qu'on m'impose de fonctionner avec la seconde feuille qui contiendra, à terme, plus de 600 fournitures ( je devrais définir article par article quelles sont les fournitures à associer manuellement sous excel et une seule fois, sans passer par VB )
J'ais donc tenté de coder cela dans la première feuille, mais l'erreur9 fait son apparition:
Sub ActiverFourniture()
Dim I As Integer
I = 2
For I = 2 To 11
If Workbooks("Test_devis_boite").Worksheets("Articles").Cells(I, 2).Value = VRAI Then Worksheets("Fournitures").Cells(2, 4).Value = VRAI 'Activation de la Fourniture1
If Workbooks("Test_devis_boite").Worksheets("Feuil1").Cells(I, 2).Value = VRAI Then Worksheets("Feuil2").Cells(3, 4).Value = VRAI 'Activation de la Fourniture2
If Workbooks("Test_devis_boite").Worksheets("Feuil1").Cells(I, 2).Value = VRAI Then Worksheets("Feuil2").Cells(4, 4).Value = VRAI 'Activation de la Fourniture5
If Workbooks("Test_devis_boite").Worksheets("Feuil1").Cells(I, 2).Value = FAUX Then Worksheets("Feuil2").Cells(2, 4).Value = FAUX 'Désactivation de la Fourniture1
If Workbooks("Test_devis_boite").Worksheets("Feuil1").Cells(I, 2).Value = FAUX Then Worksheets("Feuil2").Cells(3, 4).Value = FAUX 'Désactivation de la Fourniture2
If Workbooks("Test_devis_boite").Worksheets("Feuil1").Cells(I, 2).Value = FAUX Then Worksheets("Feuil2").Cells(4, 4).Value = FAUX 'Désactivation de la Fourniture5
Next I
End Sub
J'ais tenté une autre syntaxe sur la première ligne mais meme avec la syntaxe de la seconde ligne ça me donne la même erreur. Je me tatais à faire un case, mais ça ne change pas l'erreur non plus :s
J'ais donc tenté de coder cela dans la première feuille, mais l'erreur9 fait son apparition:
Sub ActiverFourniture()
Dim I As Integer
I = 2
For I = 2 To 11
If Workbooks("Test_devis_boite").Worksheets("Articles").Cells(I, 2).Value = VRAI Then Worksheets("Fournitures").Cells(2, 4).Value = VRAI 'Activation de la Fourniture1
If Workbooks("Test_devis_boite").Worksheets("Feuil1").Cells(I, 2).Value = VRAI Then Worksheets("Feuil2").Cells(3, 4).Value = VRAI 'Activation de la Fourniture2
If Workbooks("Test_devis_boite").Worksheets("Feuil1").Cells(I, 2).Value = VRAI Then Worksheets("Feuil2").Cells(4, 4).Value = VRAI 'Activation de la Fourniture5
If Workbooks("Test_devis_boite").Worksheets("Feuil1").Cells(I, 2).Value = FAUX Then Worksheets("Feuil2").Cells(2, 4).Value = FAUX 'Désactivation de la Fourniture1
If Workbooks("Test_devis_boite").Worksheets("Feuil1").Cells(I, 2).Value = FAUX Then Worksheets("Feuil2").Cells(3, 4).Value = FAUX 'Désactivation de la Fourniture2
If Workbooks("Test_devis_boite").Worksheets("Feuil1").Cells(I, 2).Value = FAUX Then Worksheets("Feuil2").Cells(4, 4).Value = FAUX 'Désactivation de la Fourniture5
Next I
End Sub
J'ais tenté une autre syntaxe sur la première ligne mais meme avec la syntaxe de la seconde ligne ça me donne la même erreur. Je me tatais à faire un case, mais ça ne change pas l'erreur non plus :s
oui en effet si tu dois taper 660 fois la meme chose c pas simple
si ton fichier n'est réellement confidentiel il faudrait voir si tu peux me l'envoyer
si ton fichier n'est réellement confidentiel il faudrait voir si tu peux me l'envoyer
Je ne peux pas malheureusement ( je ne trouve pas l'option joindre un fichier sur le message privé de ce site )
De plus je n'arrive pas à résoudre mon souci d'erreur 9 ( l'indice n'appartient pas à la sélection ) qui me bloque sur l'activation ou non des fournitures dans le code si dessus :s
De plus je n'arrive pas à résoudre mon souci d'erreur 9 ( l'indice n'appartient pas à la sélection ) qui me bloque sur l'activation ou non des fournitures dans le code si dessus :s
J'ais tenté de coder ça autrement, pour la validation ou non des fournitures:
Dim I as integer
For I = 2 To 4
Select Case Range("B2").Value
Case Range("B2").Value = False
Worksheets("Fournitures").Cells(I, 4).Value = False
Case Range("B2").Value = True
Worksheets("Fournitures").Cells(I, 4).Value = True
End Select
Next I
Ceci pour l'article 1, les lignes 2 à 5 de la feuille 2 étant les fournitures 1,2 et 5. L'ennui c'est que la macro marche, mais ne m'affiche pas "vrai" ou "faux" quand je coche ou non la case de l'article 1. ce code est dans la première feuille du classeur.
Je cherche aussi à faire une seconde boucle en faisant varier le nombre d'article de 1 à 10 ( dans un premier temps, mais ça ne marche pas:
Dim I as integer
Dim J as integer
For J = 2 to 11
For I = 2 To 4
Select Case Cells(2,J).Value
Case Cells(2,J).Value = False
Worksheets("Fournitures").Cells(I, 4).Value = False
Case Cells(2,J).Value = True
Worksheets("Fournitures").Cells(I, 4).Value = True
End Select
Next I
Next J
En sachant que je m'arrangerait ultérieurement pour le cas ou les articles ne contiennent pas le même nombre de fournitures ( cases vides pour les articles contenant moins de fournitures que l'article en possedant le plus )
Dim I as integer
For I = 2 To 4
Select Case Range("B2").Value
Case Range("B2").Value = False
Worksheets("Fournitures").Cells(I, 4).Value = False
Case Range("B2").Value = True
Worksheets("Fournitures").Cells(I, 4).Value = True
End Select
Next I
Ceci pour l'article 1, les lignes 2 à 5 de la feuille 2 étant les fournitures 1,2 et 5. L'ennui c'est que la macro marche, mais ne m'affiche pas "vrai" ou "faux" quand je coche ou non la case de l'article 1. ce code est dans la première feuille du classeur.
Je cherche aussi à faire une seconde boucle en faisant varier le nombre d'article de 1 à 10 ( dans un premier temps, mais ça ne marche pas:
Dim I as integer
Dim J as integer
For J = 2 to 11
For I = 2 To 4
Select Case Cells(2,J).Value
Case Cells(2,J).Value = False
Worksheets("Fournitures").Cells(I, 4).Value = False
Case Cells(2,J).Value = True
Worksheets("Fournitures").Cells(I, 4).Value = True
End Select
Next I
Next J
En sachant que je m'arrangerait ultérieurement pour le cas ou les articles ne contiennent pas le même nombre de fournitures ( cases vides pour les articles contenant moins de fournitures que l'article en possedant le plus )
J'ais tenté de coder ça autrement, pour la validation ou non des fournitures:
Dim I as integer
For I = 2 To 4
Select Case Range("B2").Value
Case Range("B2").Value = False
Worksheets("Fournitures").Cells(I, 4).Value = False
Case Range("B2").Value = True
Worksheets("Fournitures").Cells(I, 4).Value = True
End Select
Next I
Ceci pour l'article 1, les lignes 2 à 5 de la feuille 2 étant les fournitures 1,2 et 5. L'ennui c'est que la macro marche, mais ne m'affiche pas "vrai" ou "faux" quand je coche ou non la case de l'article 1. ce code est dans la première feuille du classeur.
Je cherche aussi à faire une seconde boucle en faisant varier le nombre d'article de 1 à 10 ( dans un premier temps, mais ça ne marche pas:
Dim I as integer
Dim J as integer
For J = 2 to 11
For I = 2 To 4
Select Case Cells(2,J).Value
Case Cells(2,J).Value = False
Worksheets("Fournitures").Cells(I, 4).Value = False
Case Cells(2,J).Value = True
Worksheets("Fournitures").Cells(I, 4).Value = True
End Select
Next I
Next J
En sachant que je m'arrangerait ultérieurement pour le cas ou les articles ne contiennent pas le même nombre de fournitures ( cases vides pour les articles contenant moins de fournitures que l'article en possedant le plus )
Dim I as integer
For I = 2 To 4
Select Case Range("B2").Value
Case Range("B2").Value = False
Worksheets("Fournitures").Cells(I, 4).Value = False
Case Range("B2").Value = True
Worksheets("Fournitures").Cells(I, 4).Value = True
End Select
Next I
Ceci pour l'article 1, les lignes 2 à 5 de la feuille 2 étant les fournitures 1,2 et 5. L'ennui c'est que la macro marche, mais ne m'affiche pas "vrai" ou "faux" quand je coche ou non la case de l'article 1. ce code est dans la première feuille du classeur.
Je cherche aussi à faire une seconde boucle en faisant varier le nombre d'article de 1 à 10 ( dans un premier temps, mais ça ne marche pas:
Dim I as integer
Dim J as integer
For J = 2 to 11
For I = 2 To 4
Select Case Cells(2,J).Value
Case Cells(2,J).Value = False
Worksheets("Fournitures").Cells(I, 4).Value = False
Case Cells(2,J).Value = True
Worksheets("Fournitures").Cells(I, 4).Value = True
End Select
Next I
Next J
En sachant que je m'arrangerait ultérieurement pour le cas ou les articles ne contiennent pas le même nombre de fournitures ( cases vides pour les articles contenant moins de fournitures que l'article en possedant le plus )
J'ai tenté de comprendre le besoin, en vain.
Si tu pouvais mettre ton fichier sur https://www.cjoint.com/ et copier le lien dans une réponse, ce serait plus facile de comprendre et t'aider.
A+
Si tu pouvais mettre ton fichier sur https://www.cjoint.com/ et copier le lien dans une réponse, ce serait plus facile de comprendre et t'aider.
A+
J'avoue que j'suis pas très doué pour me faire comprendre ^^"
https://www.cjoint.com/?exaBaATaHm
En espérant que ça vous éclairera un peu. Je peu, au besoin, mettre des commentaires fin d'être plus clair.
https://www.cjoint.com/?exaBaATaHm
En espérant que ça vous éclairera un peu. Je peu, au besoin, mettre des commentaires fin d'être plus clair.
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+
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+
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
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,"
"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,"
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..
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..
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 +
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 :)
Il faut donc prendre les données du tableau :)
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 !
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 !