Travail d'un formulaire avec case à cocher

Je peux vous renvoyer le fichier retravaillé ?

j'ai remplacé les faux par 0 manuellement ... il n'y a pas de truc pour qu'il reconnaisse directement le faux par 0 sans changer manuellement ?

euh .. j'ai rien dit .. ca marche direct si je clique de suite que j'ai remplacé le faux par 0

les autres feuilles ont des cases mais pas autant et ce n'est pas important car elles ne font pas partie de la check liste de contrôle....

Bonjour,

Je vais vous donner le changement à faire au niveau code. Mais avant, confirmez-moi les 2 points suivants :

1. Les feuilles concernées par les case à cocher sont exactement nommées comme vous l'avez mis ici --> https://forum.excel-pratique.com/s/goto/1134739
2. Vos feuilles ne contiennent plus que les colonnes N, O, P et Q, R pour le résultat --> comme la vue ci-dessous

presse papier02

Edit modo : fichier supprimé

Heu je n'avais pas besoin du fichier.. mais juste me dire si c'était ok. (je l'ai supprimé)

Faites ceci :

1. supprimez le code que je vous donné dans la ou toutes les feuilles où vous l'avez placé (Attention c'est un pré-requis à ce que je vous explique plus bas)
2. dans la vue que vous avez postée ici --> https://forum.excel-pratique.com/s/goto/1134720, en haut à gauche vous voyez le nom des feuilles de votre fichier. Descendez jusqu'en dessous afin de voir l'objet THISWORKBOOK
3. Double cliquez sur THISWORKBOOK et collez le code ci-dessous :

Option Explicit
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim dlg As Integer
Dim nom As String
Dim feuille()
Dim i As Byte

Application.ScreenUpdating = False

feuille = Array("PGBET-CST", "SO-CS", "LTG", "IE", "AC", "AB", "AP-ergo", "EQT-EPCI")

For i = 0 To UBound(feuille)
    If ActiveSheet.Name = feuille(i) Then
        nom = feuille(i)
        Exit For
    'Else:
        'Cancel = True
        'Exit Sub
    End If
Next i

dlg = Sheets(nom).Range("A" & Rows.Count).End(xlUp).Row

If Not Intersect(Target, Sheets(nom).Range("B9:D" & dlg)) Is Nothing Then
    With Sheets(nom).Range("B" & Target.Row & ":D" & Target.Row)
        .Font.Name = "Wingdings 2"
        .Font.Size = 12
        .Font.ColorIndex = xlAutomatic 'couleur case à cocher réinitilisée
        .Value = "£"
    End With
    Sheets(nom).Range("N" & Target.Row & ":P" & Target.Row) = 0
    Cancel = False
    With Target
        .Font.Name = "Wingdings 2"
        .Font.Size = 12
        .Font.Color = Sheets(nom).Range("A6").Interior.Color 'couleur case à cocher
        .Value = "R"
    End With
    Cancel = True
    Target.Offset(0, 12) = 1
End If

End Sub

Au début du code, vous verrez feuille=...... cette ligne correspond à toutes les feuilles qui sont concernées par les cases à cocher en B,C et D

Faites un test

j'ai effectué ce qui a été dit et pour la première feuille ca marche mais pour les autres, lorsque je clique dans les colonnes B à D, cela ne fait rien. pourtant j'ai mis le code, j'ai mis une version qui prend en charge les macros. les case ne sont pas colorées non plus

tableau 2 tableau 1

voila ce que cela donne

feuille en vert : c'est ok

feuille en bleu :
- Quel est son nom
- Avez-vous avez supprimé le code dans cette feuille
- Vérifiez que vous n'avez pas laissé un caractère vide dans le nom de l'onglet. Il doit être strictement identique au nom trouvé dans le code

mais cela ne fonctionne pour aucune autre feuille seule la 1ere ....

j'ai vérifié et je n'ai aucun autre code dans les feuille que dans ce que vous m'avez dit

Oups désolé.... j'ai omis d'enlever les lignes ci-dessous dans la boucle for i = 0 to ubound(feuille)

    Else:
        Cancel = True
        Exit Sub

NB : je viens de les ai désactiver dans le code dans mon post précédent

A voir aussi si vous double cliquer sur une case dans un autre feuille non concernée le code pourrait vous renvoyer une erreur. A analyser après test

je suis reparti ... je verrais tout à l'heure.

il faut donc que j'ajoute cette ligne ?

bonjour, alors .... les couleurs sont là et ça marche à partir du moment ou j'ai retiré la ligne .... mais je remarque que pour le feuille SO-CS, la première ligne n'indique pas la case et pour la feuille, AC et EQT-EPCI, quand je clique, les cases apparaissent sauf celle choisie. je vais essayé de cliquer sur toutes les cases pour voir mais c'est super joli

tableau 1 tableau 2 tableau 3 tableau 4

mais je remarque que pour le feuille SO-CS, la première ligne n'indique pas la case et pour la feuille, AC et EQT-EPCI, quand je clique, les cases apparaissent sauf celle choisie. je vais essayé de cliquer sur toutes les cases pour voir mais c'est super joli

Pour les cellules où vous ne voyez pas la case à cocher, vérifiez la couleur de fond et la couleur de la police dans la cellule.
Je suppose que vous n'avez pas mis un fond blanc sur la feuille ... je vois plein de personne qui font cela juste pour ne pas avoir le quadrillage et ce n'est pas la bonne méthode

j'ai vérifié et je n'ai aucune couleur en fond et le motif et la police est de couleur noir ... normal

tableau 1

par ex dans le tableau EQT-EPCI, certaine ne fonctionne pas et puis d'autres oui mais en blanc au lieu du noir

par ex dans le tableau EQT-EPCI, certaine ne fonctionne pas et puis d'autres oui mais en blanc au lieu du noir

Le souci vient de votre feuille, je pense
Par hasard, vous n'avez pas laissé un objet dans la cellule ou vous ne voyez pas la case à cocher ?
Faites un click droite dans la cellule pour le voir ou mieux pour le vérifier faites comme ceci
- appuyez sur la touche F5 du clavier (ou FN + F5)
- dans la fenêtre, cliquez sur cellule
- cochez la case "objets" puis OK
Cela va sélectionner tous les objets sur votre feuille

ca met aucun objet trouvé

hum, là je ne comprends pas trop.

Lorsque vous sélectionnez la cellule pour laquelle vous ne voyez la case à cocher, vous voyez quoi dans la barre de formule ?
Vérifiez aussi la couleur de la police dans le menu excel à ce moment là

Sinon envoyez moi la feuille EQT-EPCI dans un fichier. (faites un click droite sur le nom de la feuille, puis choisir "déplacer ou copier" et choisir nouveau classeur)


Edit : je pense que vous utilisez chaque fois des theme de couleur...

A la fin du code changez cette ligne

.Font.Color = Sheets(nom).Range("A6").Interior.Color

par celle-ci

.Font.ThemeColor = Sheets(nom).Range("A6").Interior.ThemeColor

je ne vois que ceci dans la formule .Font.Color = Sheets(nom).Range("A6").Interior.Color 'couleur case à cocher et non celle que vous avez mise

en mettant la formule, elle me marque débogage ou qqch du genre

Voici mes commentaires :

1. Vous devriez suivre point par point ce que je vous écris car au vu de votre dernier fichier, le nom de la feuille est FEUIL1. Ce qui implique que vous n'avez pas suivi la méthode décrite dans mon dernier post. Sans quoi j'aurais exactement le nom de la feuille de votre bon fichier.

Question : quel est le nom exact de la feuille de votre fichier posté ??

2.

je ne vois que ceci dans la formule .Font.Color = Sheets(nom).Range("A6").Interior.Color 'couleur case à cocher et non celle que vous avez mise. en mettant la formule, elle me marque débogage ou qqch du genre

  • Le débogage n'a rien avoir avec la couleur. C'est le nom de votre feuille qui n'est pas reconnu. Je vous ai précisé ici https://forum.excel-pratique.com/s/goto/1134917 que les feuilles doivent être nommées comme écrit dans la ligne de code Feuille = array(….
  • Vous me parlez de FONT.COLOR alors que dans mon dernier message je vous demandé de changer la ligne...

3. Dans ce post https://forum.excel-pratique.com/s/goto/1134619, vous me dites que les feuilles sont identiques et dans ce post https://forum.excel-pratique.com/s/goto/1134638 vous me dites --> je pense avoir 8 feuilles donc 8 couleurs et la couleur de référence est celle en A6. Dans la xas du formulaire, c'est le vert foncé …

Donc votre souci est là --> A6 est blanc donc la case à cocher est en blanc.


Je résume :
1. Dans chacune de vos feuilles concernées par vos cases à cocher la structure de chaque feuille doit être identique:
- la couleur de référence doit être en A6
- la première ligne de données et des cases à cocher commencent toujours en ligne 9
- Les colonnes B,C et D sont celles des cases à cocher
- Les colonnes de 1 ou 0, sont les colonnes N,P et Q

2. le nom des feuilles concernées par les cases à cocher en B,C et D doit être identique à la ligne FEUILLE = ARRAY(…….

Là on vient de s'envoyer inutilement des messages toute l'après-midi. Votre souci vient uniquement de la structure de vos feuilles. Donc pour chaque feuille vérifier la concordance de chacun des 2 points ci-avant. Le cas échéant on ne va jamais y arriver.

Désolé d'avoir été long....

Rechercher des sujets similaires à "travail formulaire case cocher"