Autres Mise en forme d'une multipage en fonction des checkboxs

eric57

XLDnaute Occasionnel
Bonsoir le forum.

Je suis en train de réaliser une application pour le contrôle par les arbitres des documents des équipes présentes à un tournoi.

Je suis bloqué depuis plusieurs jours par la partie " Validation" qui sont des checkbox que les arbitres doivent cocher .

En fonction des validations, les couleurs changent

MAuve = aucune validation
Orange = validation partielle
Vert = Validation complète
Rouge = Refusé

Cela bien sur pour chaque joueur de l’équipe depuis la multipage

A force de bidouiller mes codes et et macros, je pense que j'ai foutu un beau bordel, ou bien je ne comprend pas ce qui se passe .

Aussi je viens demander votre aide.

J'ai allégé mon fichier pour ne pas aller chercher les photos et que vous puissiez le télécharger . et j'ai chargé une équipe "fictive" pour ne pas avoir des noms qui se promènent sur la toile
En espérant que quelqu'un pourra m'aider .

Ps oui je ne suis pas un pro du codage, juste un passionné, mes macros ne seront donc pas toujours très .... réglos :)
 

patricktoulon

XLDnaute Barbatruc
bonjour
j'ai regardé le fichier
  1. sur mon écran 107 cm le userform est trop grand
  2. je les cherche les checkbox ils sont bien cachés ces petites bêtes là
  3. a l'ouverture déjà il y a un bug
  4. je me doute que si la question n'est pas posée c'est parce qu'il y en a plusieurs

pour commencer
l'erreur qui est déclenchée a l'ouverture est du a un manque de connaissance basique
le B a Ba du vba
a savoir un adressage composé de cellule doit etre précédé du parent (la feuille)
ou dans un bloc with
donc ceci

1671443644529.png


se transforme en cela

VB:
 With Sheets("Info")
        If UserForm4.AutPar.Enabled = False Then
            NbV = Application.CountA(.Range(.Cells(Lig, 12), .Cells(Lig, 15)))
            Max = 4
        Else
            NbV = Application.CountA(.Range(.Cells(Lig, 12), .Cells(Lig, 16)))
            Max = 5
        End If
    End With

ce même code se répète plusieurs fois dans le module du userform il faudra donc tous les modifier
 

eric57

XLDnaute Occasionnel
Décidément .. j'ai fait ma réponse hier soir, et je vois que je ne l'ai pas envoyé .... Pas doué quoi :)

Dans mon userfrom, j'ai 14 pages pour l'ensemble des joueurs

En bas, la partie "Validation" doit pouvoir a chaque changement de joueurs affiché l'état des validations déjà faites par les arbitres

PAr ex pour un joueur, il a pu valider la licence, pour un autre, la licence et l'assurance etc etc .

Les couleurs du fond changent en fonction de l'état de validation .

Ce sont ces changement de couleurs et la reprise des checkbox cochés ou non coché que je n'arrive pas a faire

J'espére avoir ete un peu plus clair, pas tjr facile
 

TooFatBoy

XLDnaute Barbatruc
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Ce sont ces changement de couleurs et la reprise des checkbox cochés ou non coché que je n'arrive pas a faire

J'espére avoir ete un peu plus clair, pas tjr facile
Oui, c'est effectivement un peu plus clair.
Mais comme hier tu disais "les couleurs changent" je ne pensais pas que le problème était à ce niveau.

Puisque patricktoulon est sur le coup, ton problème va être réglé en 2'. 👍

Bonne journée
🖖
 

patricktoulon

XLDnaute Barbatruc
Merci pour ton retour PatrickToulon. je vais déjà corriger cela .

J'ai un bouton en haut a droite qui permet de réduire le userform car justement il devra s'adapter a tout les responsables qui vont l'ouvrir
oui j'ai vu et ce n'est pas suffisant il y a beaucoup plus simple
le faire un peu plus petit et lui donner l'extensibilité de toute fenêtre Windows pour qu'il s'adapte a toute sorte d’écran
 

patricktoulon

XLDnaute Barbatruc
re
bon ca y est je les ai trouvé tes checkboxs (a les sales petites bêtes elle étaient bien cachées)

tout d'abords pour commencer
on vire la partie gestion du zoom y compris sur la feuille

on va simplement ajouter deux variables globales dans le module du userform4
donc en haut du module
1671446767363.png


Ensuite dans le activate
VB:
Private Sub UserForm_Activate()
    LargUF = Me.Width
    HautUF = Me.Height
SpinButton1_SpinDown'on declenche à l'ouverture du userform l'event down du spinbutton
End Sub

l'event down du spin button
VB:
Private Sub SpinButton1_SpinDown()
Dim hwnd&
hwnd = ExecuteExcel4Macro("CALL(""user32"",""GetActiveWindow"",""JCC"")")    'api GetActiveWindow Capture du handle de la fenetre active
ExecuteExcel4Macro ("CALL(""user32"",""ShowWindow"",""JJJ"",""" & hwnd & """,""" & 3 & """)")    ' application du mode
    ' et si tu veux les trois bouton debloque la ligne ci dessous
    'ExecuteExcel4Macro ("CALL(""user32"",""SetWindowLongA"",""JJJJJ""," & hwnd & ", " & -16 & ", " & &H94CF0080 & ")")     'api SetWindowLongA
    coeffzoom = Application.Min(Me.Height / HautUF, Me.Width / LargUF)
    Me.Zoom = 100 * coeffzoom
End Sub

voilà maintenant ton userform occupera a l'ouverture tout l’écran quelque soit l’écran utilisé
alors le zoom pour userform est un peu particulier dans le sens ou on a qu'une seul donnée soit le height ou le width utilisable , ce qui fait que le résultat d'affichage peut varier d'un écran à l'autre mais dans tout les cas on aura la visibilité sur tout les controls

résultat chez moi sur tout l’écran

1671447372080.png


si tu veux un repositionnement et un redimensionnement des controls proportionné au width et au height, t 'a qu'a demander on fera autrement
fait déjà ça en plus des premières modifs que je t'ai dites
on verra après pour le reste
il va de soit bien sur que l'events up du spinbutton doit etre modifié
VB:
Private Sub SpinButton1_SpinUp()
Dim hwnd&
hwnd = ExecuteExcel4Macro("CALL(""user32"",""GetActiveWindow"",""JCC"")")    'api GetActiveWindow Capture du handle de la fenetre active
ExecuteExcel4Macro ("CALL(""user32"",""ShowWindow"",""JJJ"",""" & hwnd & """,""" & 1 & """)")    ' application du mode
    ' et si tu veux les trois bouton debloque la ligne ci dessous
    'ExecuteExcel4Macro ("CALL(""user32"",""SetWindowLongA"",""JJJJJ""," & hwnd & ", " & -16 & ", " & &H94CF0080 & ")")     'api SetWindowLongA
    Me.Zoom = 100

End Sub
 
Dernière édition:

eric57

XLDnaute Occasionnel
Dim hwnd& hwnd = ExecuteExcel4Macro("CALL(""user32"",""GetActiveWindow"",""JCC"")") 'api GetActiveWindow Capture du handle de la fenetre active ExecuteExcel4Macro ("CALL(""user32"",""ShowWindow"",""JJJ"",""" & hwnd & """,""" & 3 & """)") ' application du mode ' et si tu veux les trois bouton debloque la ligne ci dessous 'ExecuteExcel4Macro ("CALL(""user32"",""SetWindowLongA"",""JJJJJ""," & hwnd & ", " & -16 & ", " & &H94CF0080 & ")") 'api SetWindowLongA coeffzoom = Application.Min(Me.Height / HautUF, Me.Width / LargUF) Me.Zoom = 100 * coeffzoom
j'ai changé avecle bloc With dans tout le module. Je vais m'attaquer a tous les changer

Par contre j'ai une erreur dans ton dernier code " Erreur Division par zéro"
 

Pièces jointes

  • ereur-zero.JPG
    ereur-zero.JPG
    49.7 KB · Affichages: 16

Discussions similaires

Statistiques des forums

Discussions
314 488
Messages
2 110 132
Membres
110 679
dernier inscrit
lpierr