Microsoft 365 RÉSOLU Cases à cocher (active x) qui ne tiennent pas en place

capoiri1

XLDnaute Nouveau
Bonjour à tous :)
Alors voilà...
J'ai monté un document Excel avec des codes qui masquent/affichent des lignes tout dépendamment de si une case à cocher est active ou non.
Quand les lignes à masquer/afficher contiennent des cases à cocher, j'ai mis des codes pour que si les lignes sont masquées, les cases à cocher deviennent invisibles.
Tout marche comme sur des roulettes quand les éléments sont en place, mais le problème est lors de la réouverture du document...
Si je met comme Format de contrôle de case à cocher « Déplacer sans dimensionner avec les cellules » ou « Déplacer et dimensionner avec les cellules », à la réouverture du document soit elles ont disparus, soit elles sont « en motton » (dans le même tas, à un endroit autre d'où elles devraient être).
Si je met comme Format de contrôle de case à cocher « Ne pas déplacer ou dimensionner avec les cellules », le problème est que si tout n'est pas cocher (ce qui n'arrivera jamais lors de l'entrée des données de mes collègues), les cellules restent aux mêmes endroits que si tous les cases seraient cochées...
Des heures et des heures de travail et maintenant je panique un peu!!!
J'ai joint un fichier test. En vrai le document comporte environ 250 lignes et 90 cases à cocher, j'ai donc réduit le tout.
J'ai mis les cases à cocher sous le Format de contrôle « Ne pas déplacer ou dimensionner avec les cellules » pour que vous puissiez voir le format réel de ce que ça devrait être....
Bon week-end ;-)
 

Pièces jointes

  • Fiche d'analyse_forum.xlsm
    72.9 KB · Affichages: 15
Dernière édition:

capoiri1

XLDnaute Nouveau
Finalement, ma joie n'aura pas durée longtemps, je viens de trouver un autre problème @mapomme ...

Dans mon document, à partir du moment ou je fais une insertion de ligne dans un de mes tableaux (par exemple dans mes tableaux surlignés en jaune), mes codes servant à afficher/maquer certaines lignes ne mettent pas à jour les lignes... Voici les codes utilisés entre-autres :

VB:
If Range("E30") = Chr(codecoche) Or Range("E31") = Chr(codecoche) Then [213:218].EntireRow.Hidden = True Else [213:218].EntireRow.Hidden = False
If Range("E32") = Chr(codecoche) Then [219:236].EntireRow.Hidden = True Else [219:236].EntireRow.Hidden = False
If Range("H38") = Chr(codepascoche) Then [237:261].EntireRow.Hidden = True Else [237:261].EntireRow.Hidden = False
If Range("I264") = Chr(codecoche) Then [267:268].EntireRow.Hidden = False Else [267:268].EntireRow.Hidden = True
If Range("C282") = Chr(codecoche) Then Range("H282").Value = Range("E18").Value Else Range("H282").Value = ""
If Range("C282") = Chr(codecoche) Then [285:286].EntireRow.Hidden = False Else [285:286].EntireRow.Hidden = True
If Range("I285") = Chr(codecoche) Then [287:288].EntireRow.Hidden = False Else [287:288].EntireRow.Hidden = True

Est-ce qu'il y a un moyen d'y insérer un autre code qui ferait la mise à jour automatique si jamais j'insert une ligne plus haut?
 

Pièces jointes

  • Test2Wingdings_Fiche d'analyse_Annexe A_version 2.xlsm
    49.5 KB · Affichages: 12

Dranreb

XLDnaute Barbatruc
Vous pourriez donner des noms à vos plages.
Et écrivez les chose plus simplement parce qu'une condition c'est déjà une expression Boolean, alors c'est inutile d'affecter True si elle est à True et sinon False. Affectez l'expression c'est tout. Par exemple pour votre 1ère ligne :
VB:
[213:218].EntireRow.Hidden = Range("E30") = Chr(codecoche) Or Range("E31") = Chr(codecoche)
Que vous pourrez réécrire ainsi après avoir donné "LignesCoche30" comme nom dans le classeur à la plage 213:218 :
VB:
[LignesCoche30].EntireRow.Hidden = Range("E30") = Chr(codecoche) Or Range("E31") = Chr(codecoche)
Les références des noms suivent leurs déplacements suite à insertion de lignes devant.
 

Discussions similaires

Statistiques des forums

Discussions
311 729
Messages
2 081 966
Membres
101 852
dernier inscrit
dthi16088