Problème formule VBA avec Label dynamique
Bonjour
je rencontre un problème dans le fichier que je suis en train de faire.
Dans le formulaire, j'ai 2 comboboxs :
La première me sert à sélectionner un secteur (A, B, C...) puis à m’afficher la liste des blocs grâce aux labels.
Le deuxième me sert à sélectionner le numéro de la tournée. A la suite de cette étape, il y a 2 choix : soit il n'y a pas d'infos existantes dans l'onglet "Enregistrement" et dans ce cas un message box me demande si je veux ouvrir une nouvelle tournée, soit il y a des infos existantes et dans ce cas le formulaire va reprendre ces informations et mettre à jour automatiquement les checkboxs.
Mon problème est que, dans l'exemple que j'ai associé, il y a bien des informations existantes et que la macro devrait normalement venir me les chercher, or ce n'est pas le cas.
J'utilise les Controls("Label" & e).Caption et j'ai l'impression que c'est à ce niveau que se situe l'erreur.
Si quelqu'un pourrait m'aider, ça serait très sympa.
Bonjour
Je pense qu'il s'agit d'un problème de nom de zones : une lettre ne suffit pas pour nommer une colonne il en faut au moins 4, ou 3+1 chiffres pour éviter toute confusion avec des nr de colonnes
Ensuite , ta feuille liste n'est pas structurée de manière cohérente. Tu peux mettre tes secteurs de A à R les uns sous les autres, un siple filtre te permettra de récupérer tes infos. Il est inutile de tout prévoir, il vaut mieux saisir ce qui existe et rajouter après.
Que veux tu faire en affichant toutes ces lignes à l'écran ? Les infos de repérage des bloc n'apparaissent pas, il vaut mieux mettre des boutons radio plutôt que des cases à , une liste avec les 4 statuts pourrait être aussi suffisante
Pourquoi afficher tous les statuts, un filtre serait peut être plus intéressants pour moins encombrer l'écran
Les deux premiers points me paraissent essentiels, les autres questions sont de pure forme à fin de conseils
Soumis à ta sagacité
Cordialement
FINDRH
Bonjour FINDRH et merci pour ta réponse
Pour des raisons de confidentialité, je ne peux pas mettre le fichier original. Sur ce fichier, il a bien des noms de secteur avec au moins 4 lettres et je rencontre aussi le même problème, donc je ne suis pas sûr que le problème vienne de là.
Concernant la structure, il y a surement des choses à améliorer mais mon but est que ce formulaire soit accessible à la compréhension pour quelqu'un se servant très peu d'un ordinateur. Et pour cela, je pense que des cases à cocher est beaucoup plus simple et visuel bien que je suis d'accord ça semble un peu lourd.
Pour les macros, je comprendrais aussi qu'il y ait des aberrations ou des formules à simplifier mais pour ma part je débute et j'en découvre davantage tous les jours
Cordialement
Merci AMIR, ça a l'air très intéressant ton développement de formules. Je vais analyser ça de plus près
Sur mon fichier, j'ai trouvé le problème. Je comparais des chiffres et du texte dans mon IF : .Range("D" & x) = Controls("Label" & e).Caption . Quand je mets un val() sur les 2 critères ça fonctionne : Val(.Range("D" & x)) = Val(Controls("Label" & e).Caption) .
Merci pour votre aide.
Bonne journée
bonsoir
Antoine15069 a écrit :Merci AMIR, ça a l'air très intéressant ton développement de formules. Je vais analyser ça de plus près
.
oui , l idée était de vous débarrasser des bouts de codes inutiles comme :
'ligne 1
Private Sub CheckBox1_afterupdate()
CheckBox1.Value = True
CheckBox2.Value = False
CheckBox3.Value = False
CheckBox4.Value = False
End Sub
Private Sub CheckBox2_afterupdate()
CheckBox1.Value = False
CheckBox2.Value = True
CheckBox3.Value = False
CheckBox4.Value = False
End Sub
Private Sub CheckBox3_afterupdate()
CheckBox1.Value = False
CheckBox2.Value = False
CheckBox3.Value = True
CheckBox4.Value = False
End Sub
jusque-au lignes 55 ou je ne sais pas par lutilisation des option buttons et dans les frames
Antoine15069 a écrit :Sur mon fichier, j'ai trouvé le problème. Je comparais des chiffres et du texte dans mon IF : .Range("D" & x) = Controls("Label" & e).Caption . Quand je mets un val() sur les 2 critères ça fonctionne : Val(.Range("D" & x)) = Val(Controls("Label" & e).Caption) .
je n était pas intéresse aux problèmes pcq j ai pensé que vous aurez besoin de refaire tout les codes, pcq vous pouvez le faire seulement avec quelques boucles et autre simples notions de VBA.
Il n' y a pas de soucis
Dans l'immédiat, j'avais besoin de sortir un bout de programme pour commencer à l'utiliser.
Par contre, il est clair que je vais reprendre votre exemple pour le comprendre dans un premier temps puis pour m'aider à simplifier les formules du fichier.
Merci pour vos infos.