XL 2010 For each controls impossible-résolu

Docdav

XLDnaute Junior
Bonjour,
j'ai un formulaire de saisie, avec plusieurs checkbox, nommée Box32,Box33, etc, le nombre étant la colonne dans lequel le résultat va se mettre. Rien de sorcier, une boucle d'écriture.

Mais...certaines checkbox doivent être modifiées en Frame avec 2-3 choix. J'ai la routine pour celles-ci.

Le problème est que la boucle des chekbox est rompue puisque certaines n'existent pas.
Soit faire plusieurs boucles sur les box existantes (pas propre)
Soit faire une boucle qui cherche les chekbox et fais le boulot.

Un exemple de ce que j'ai trouvé et qui ne marche pas : ça doit préremplir toutes les box normalement.

Dim obj As Control
For Each obj In Me.Controls
If TypeOf obj.Object Is msforms.CheckBox Then obj.Object.Value = True
Next obj

Avez-vous une idée.
Je mets mon fichier, pas du tout optimisé (va falloir que je fasse des modules), qui bug si il n'y a pas qq chose en ligne 6.

Il fonctionnait très bien avant de passer à ces choix multiples avec uniquement des box.
J'essaie d'avoir un fichier comptable mac (il faut juste que je déclare les listes dans ce fichier et ça fonctionne)

Merci de votre lecture et de votre aide.
David.
 

Pièces jointes

  • Formulaire-PC-modif.xlsm
    2.3 MB · Affichages: 115

Docdav

XLDnaute Junior
Je vais enchainer ensuite avec mon fichier de planning que je dois mettre à jour, une usine à gaz de compétition....je le mets en pj pour te faire rire...je ne sais pas si je le modifierai, là ça fonctionne...à part le faire remplir en automatique, mais là j'avoue mon incapacité même d'imaginer la chose
on me donne un fichier par personne avec les désidératas (4 codes couleurs avec une lettre associée).
Je colle tous les désidératas.
Ca me donne pour chaque jour les personnes qui doivent le plus bosser (si elles sont en retard sur leurs obligations de service, si elles ont beaucoup d'indispo ensuite, si elles sont dispo) par un score et un classement.

Ensuite on rempli à la main, et pleins de règles de MFC nous encadrent (travaille sur une autre ligne, travaille la veille, pas dispo...)

J'ai ensuite une grosse feuille de calcul, et d'autres qui sont des liaisons pour présenter les calculs...
Une macro reçue ici même pour sortir un planning personnalisé...

Une sacré usine...
UN jour je chercherais à l'améliorer...il faut d'abord que je trouve un angle d'attaque...

Bonne semaine, merci d'aider les débutants (et sans doute les moins débutants , je n'ai fait qu'effleurer le sujet)
 

Pièces jointes

  • Planning TMC-preparation 2017.xlsm
    3 MB · Affichages: 77

Modeste

XLDnaute Barbatruc
Bonjour,

Surpris par ton message (le #62), j'ai ouvert le fichier que j'ai déposé hier. Ma première hypothèse a été de me dire que je devais être bourré en le déposant, puisque je n'y retrouvais pas le format ... quelques essais plus loin, il me semble que c'est le passage de 2016 à 2010 qui "flinguerait" le format hh:mm :eek: (à moins que ce ne soit la version de Windows ??)

Bref, un dernier essai avec ton fichier modifié sous Excel 2010 et Windows 7 (et testé avec succès sous Excel 2016 et Windows 10) Ceci me fait douter des chances de voir le passage vers Mac s'effectuer sans douleur!?
... Alea jacta est!

Tu nous diras, si tu as l'occasion de tester?
 

Pièces jointes

  • Formulaire-PC-V7-pour-codage (Docdav).xlsm
    167.8 KB · Affichages: 76

Docdav

XLDnaute Junior
Je suis honteux...
Je me suis mal exprimé...je n'ai pas réussi, de mon côté, car avec TON fichier CA MARCHE !!!!

Et c'est cela qui m'exaspère, ne pas réussir à régler un problème de format de cellule.....
J'ai pourtant bien tenter de faire les modifications comme toi, sur W7+2010 et sur W10+2016 (j'ai mis W10+Excel2016 en virtuel sur mon mac pour tester), je ne sais pas pourquoi ça ne fonctionnait pas...changement de format pris en compte, mais pas effectif.

J'ai ajouté de nouvelles entrées et elles sont bien relues et ça marche.

J'ai trouvé je pense la cause...sans doute ai-je enregistré le fichier une fois avec le mac après un essai ? Puis l'erreur s'est exportée sur pc ? Car ton fichier marche sur windows, mais pas sur mac.

Je vais rester sur ton fichier et ne plus l'ouvrir avec Excel-mac (je ne sais même plus quand il a été ouvert avec puisque leva est vraiment mal pris en charge, j'ai du cliquer et ça l'a ouvert avec plutôt qu'avec Excel-windows qui devait pas être lancé sur la machine virtuelle)

En cherchant...j'ai trouvé comment faire fonctionner sur mac, il faut mettre en heure, la première ligne *13:30:55, et ça lit l'heure normalement, et affiche en hh:mm dans le formulaire. (dans le tableur ça met bien hh:mm:ss)

La même modif sur pc fonctionne mais affiche en hh:mm:ss dans le formulaire...
Su mac, on a beau mettre en personnalisé,hh:mm, il affiche juste après "heure"...en hh:mm certes, mais dans le formulaire en h:mm si c'est moins de 10:00

il doit y avoir un bug quelque part...

En dehors de ça sur mac le fichier est presque fonctionnel, je dois déclarer les liste à la main, il faut que je regarde ton formulaire code postal car ça ne valide pas, mais je crois qu'il y a des soucis avec les boutons, une façon particulière des les insérer... quelques uns veulent absolument coder sur leur mac, mais en plus du formulaire déguelasse (résolution différente des éléments), il y a quelques soucis à régler.

Je leur ai dit que ce serait pour plus tard...

Si le fichier windows fonctionne, basta, d'autant plus qu'on va attaquer le planning pour 2017, pour 1 an, on est 2...pour le planning de 25 praticiens avec chacun leur habitudes et chacun leurs désidératas différents...sans parler de la trame à remplir...une boite informatique nous a dit que c'était pas possible en automatique au vu de notre cahier des charges.


Encore merci beaucoup, un dieu de l'excel...je crois bien que je vais pouvoir mettre résolu.
J'attends demain pour tester au boulot.
 

Modeste

XLDnaute Barbatruc
Bonsoir,

Tu peux peut-être aussi tester ceci, dans ta Sub lecture. Remplace la partie de lecture des TextBox par:

VB:
        Case "TBX", "CMB"
            If Col = 4 Or Col > 22 And Col < 29 Then
                ctrl.Value = Format(F.Cells(ligneEnreg, Col), "hh:mm")
            Else
                ctrl.Value = F.Cells(ligneEnreg, Col)
            End If
avec un peu de chance, ça te fera une version plus "portable" (à vérifier ...). L'idée serait de ne pas tenir compte du format des cellules.
Pas pu tester en 2010 ce soir.
 

Docdav

XLDnaute Junior
Bonsoir, pas eu le temps de tester la modification, mais le fichier précédent passe sur les ordis du boulot.OUF !
Je vais regarder ça demain.
Je vais chercher aussi à remplacer le calcul de différence d'heure qui est dans le tableur par un module, pour être plus propre.

A plus tard.
 

Docdav

XLDnaute Junior
Bonjour Modeste, pas eu beaucoup de temps ces derniers jours.
La manip semble fonctionner, mais ça marchait déjà avant.

Mon fichier est opérationnel, j'ai fait qq motif simples (dropdown du code postal, zoom pour ceux qui ont un petit écran,ajout du calcul de différence d'heure dans un module.)

J'ai un dernier souci avec la ligne 7, qui traine depuis le début...ça n'enregistres pas dans cette ligne (la première du tableau). Et derrière ça occasionne un bug car la liste de lecture (qui cherche à partir de B7 bug...), propriétés List de la combobox de choix de fiches à relire, que je résous en mettant qq chose en B7 ou en mettant un "if B7<>0 then liste de combobox" (mais ça me désactive la liste de relecture...)

Je ne comprends pas...bon une solution est de laisser des lignes remplies, mais je cherche un fichier propre à donner.
 

Pièces jointes

  • Formulaire-PC-probleme ligne 7.xlsm
    137.6 KB · Affichages: 103

Docdav

XLDnaute Junior
Bonjour,
je n'ai pu répondre plus tôt, l'accès au forum ne fonctionnait pas.
Je vais essayer d'être clair (pas simple ça c'est limite clair pour moi).
J'ai refait plein d'essais.

Si je n'ai rien dans la feuille Excel, j'ai une erreur 381, list propriétés. Si j'ai des lignes en dessous de la ligne 7 ça va.

Seul moyen d'enregistrer une nouvelle fiche avec une feuille vide, désactiver la liste qui se met dans la combo de recherche.
J'avais mis un bout de code qui désactive la liste quand il n'y a rien en B7 (je croyais que ça venait de la ligne 7).
Une fois que j'ai rempli des fiches je met qq chose en B7, ça remarche.
Je pourrais mettre un bout de code qui réactive cette liste, mais c'est pas propre...

J'ai un autre souci que je viens de découvrir, les dates s'enregistrent pour certaines en format américain...problème connu, je cherche la solution sur les forums.
 

Modeste

XLDnaute Barbatruc
Bonsoir,

Désolé, mais toujours pas sûr d'avoir compris?
J'ai effacé le contenu de B7; le tableau ne contient donc que sa ligne de titres et une ligne vide.
Dans la Sub Validation, j'ai modifié l'initialisation de la variable lignevide comme ceci:
VB:
lignevide = IIf(F.[B7] = "", 7, F.Range("B65535").End(xlUp).Row + 1)

J'ouvre le UserForm avec le bouton Go, je renseigne une nouvelle fiche, elle s'enregistre en ligne 7. La suivante, en ligne 8. Suis pas allé voir ailleurs, puisque pas certain de chercher au bon endroit!?
 

Docdav

XLDnaute Junior
SUPER !!! tout fonctionne, j'i revu et peaufiné 2-3 détails, j'ai maintenant un formulaire qui fonctionne impeccable, j'ai appris pleins de choses, génial. Il est pourtant, simple d'après ce que je peux voir sur le forum, mais moi, ça me va et ça réponds à toutes mes attentes.

Palme d'or à Modeste !!!
Que de remerciements à faire...

Je clôture le sujet, et reviendrais sur un autre si j'ai des évolutions à demander.
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 116
dernier inscrit
kutobi87