pour la boucle des mois j'avais déjà donné la solution ici'Boucle sur les mois (normalement tu devrais aller jusqu'à 11 puisque l'index commence à 0)
For l_intCompteurLigne = 0 To 11 et
' Boucle sur les Jours du mois (Tu devrais donc aller jusqu'à 30 puisque l'index commence à 0)
For l_intCompteurControl = 0 To 31
Est-il possible de modifier ces boucles.........
Je précise le fonctionnement plus en détail : on utilise .MoveLast pour récupérer le nombre d'enregistrements, puis un .Movefirst pour se repositionner au début afin de commencer la lecture et ensuite on limite la boucle avec .Recordcount -1 qui est le nombre total d'enregistrements à lire -1 puisque l'index démarre de 0. Avec novembre ce sera 11 - 1 donc exécution d'une boucle de 0 à 10.
A noter que l'instruction With l_rsJournal est pratique car cela évite de répéter l_rsJournal, qui est le nom du RecordSet à chaque instruction ( comme dans l_rsJournal.RecordCount par exemple).
Pour la seconde boucle, cela fonctionne déjà avec février qui n'a que 28 ou 29 jours et tous les autres mois ayant 30 jours.
Oui, il suffit de les ajouter avant le Case ElseEst-il possible de pouvoir gérer indépendamment les 0 des contrôles vides. Les cases vides correspondent à mes absences du domicile et les 0 sont effectifs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Case 0 Me.Controls(l_strRadicalLigne & l_strRadicalColonne).BackColor = choix_de_la_couleur_de_fond Me.Controls(l_strRadicalLigne & l_strRadicalColonne).ForeColor = choix_de_la_couleur_de_texte Case Null ...
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Bonjour Tee_grandbois
Pour les mois pris en compte c'est Ok , pour les 0 c'est Ok, mais pour Case Null ce n'est pas pris en compte
Voici ce que j'ai fait.
Pourquoi pour les chiffres supérieur à 0 c'est Case Is = 1 est pour le 0 c'est Case 0 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Dim l_lngVide As Long, l_lngZero As Long l_lngZero = RGB(255, 255, 153) l_lngVide = RGB(0, 183, 239) Case Null Me.Controls(l_strRadicalLigne & l_strRadicalColonne).BackColor = l_lngVide Me.Controls(l_strRadicalLigne & l_strRadicalColonne).ForeColor = l_lngVide
Cordialement
bonjour,
c'est un raccourci : avec Case Is il faut préciser le(s) signe(s) de comparaison (= , >=, < , < =, <>) si on ne met pas Is, c'est = par défaut.Pourquoi pour les chiffres supérieur à 0 c'est Case Is = 1 est pour le 0 c'est Case 0 ?
Pour les valeurs nulles, c'est vrai que j'aurai dû pensé que la comparaison ne fonctionne pas comme ça, c'est le souci avec nul.
Je propose 2 solutions:
- soit on inhibe les valeurs nulles par du texte vide ('"" ou vbNullString) à l'instruction suivante (juste avant le commentaire ' Affectation de la couleur de fond et de la couleur d'écriture):
et on remplace la comparaison Case Null par:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Select Case .Fields(l_intCompteurControl) & "" 'ou alors : Select Case .Fields(l_intCompteurControl) & vbNullString- soit on traite les valeurs nulles dans le Case Else :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Case Is = "" 'ou alors: Case Is = vbNullString
pour information, la couleur de texte pour les vides (Forecolor) est inutile.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Case Else If IsNull(.Fields(l_intCompteurControl)) Then Me.Controls(l_strRadicalLigne & l_strRadicalColonne).BackColor = l_lngVide Else Me.Controls(l_strRadicalLigne & l_strRadicalColonne).BackColor = l_lngBlanc Me.Controls(l_strRadicalLigne & l_strRadicalColonne).ForeColor = l_lngNoir End If End Select
Merci de ne pas répondre systématiquement avec le bouton "Répondre avec citation", il vaut mieux utiliser le bouton bleu à gauche "Répondre à la discussion". Si c'est nécessaire, utilise plutôt l'icone bulle, juste avant le # pour citer une partie de la discussion après l'avoir copié et collé.
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Re
Merci de toutes ces informations et remarques pour la bonne utilisation du Forum.
j'ai utilisé cette partie de code
Tout fonctionne à merveille.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Case Else If IsNull(.Fields(l_intCompteurControl)) Then Me.Controls(l_strRadicalLigne & l_strRadicalColonne).BackColor = l_lngVide Else Me.Controls(l_strRadicalLigne & l_strRadicalColonne).BackColor = l_lngBlanc Me.Controls(l_strRadicalLigne & l_strRadicalColonne).ForeColor = l_lngNoir End If
Je teins à remercier tous ceux qui ont participer à cette discussion où j'ai appris beaucoup de choses.
J'ai une dernière question qui ne pas en ligne de directe dans cette discussion et avant d'en ouvrir une nouvelle je voudrais savoir si cela est possible,
d'ouvrir une requête dynamique croisée à l'aide d'une liste déroulante, car j'ai ce message qui s'affiche Microsoft office ne reconnait pas [Formulaires]![MG]![Cbo_HtePluie_Couleur] en tant que champ ou expression correcte.
Je placerai affaire résolu, après cette réponse.
Cordialement
Re
J'ai trouvé la solution à ma dernière question concernant l'ouverture d'une RAC à l'aide d'une liste déroulante. Je suis passé par la suppression et création d'une table issue d'une requête avec critère de sélection.
Je remercie tous les participants et je clos cette discussion qui m'a apportée beaucoup.
cordialement
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager