Microsoft 365 afficher/masquer des lignes en fonction de la valeur d'une cellule qui aura été renseignée par une autre feuille (via un copier/collé automatique)

Nel'

XLDnaute Nouveau
Bonjour,

Je travaille sur des cycles horaires. Le nombre d'heures peut être réalisé sur 1 à 12 semaines (selon les équipes).
J'ai deux feuilles avec pour chacune un code qui masque/affiche les colonnes en fonction du résultat d'une cellule située sur la même feuille. Cette cellule est un menu déroulant permettant de sélectionner le nombre de semaines (et d'afficher le nombre de colonnes nécessaires).
Je cherche ensuite à transposer les tableaux de chaque feuille sur une troisième (synthèse).
Les tableaux doivent être l'un en dessous de l'autre (avant/après).
Du coup, l'affichage/masquage se fait cette fois par ligne.
Premier problème rencontré : une fois les lignes masquées, si l'on change la valeur de la cellule pour afficher les lignes masquées cela ne fonctionne plus.
J'avais réglé le problème à force de recherche.
J'ai bien compris que je ne pouvais pas récupérer le nombre de semaines sur les autres feuilles.
J'ai donc tenté le code qui permet ceci :
Une fois la semaine sélectionnée dans le premier onglet (feuille active), le code de cette feuille va renseigner le troisième onglet.
On passe à l'onglet suivant, on sélectionne la semaine (la feuille devient la feuille active), le code cette feuille renseigne le troisième onglet.
L'écriture sur le troisième onglet est bien effective mais les lignes ne bougent plus.
Et en plus après cela le code qui permettait d'afficher ou masquer les colonnes de mes deux premières feuilles, ne fonctionnait plus non plus.
Je ne souhaite pas mettre de "bouton" dans mon document (ce qui est proposé dans d'autres posts).
Bref, second problème : en voulant automatiser cette action, j'ai tout pété.
Je suis novice en VBA. Je me contente de faire des recherches et copier/coller en adaptant à mes besoins.
Merci pour votre aide.
 

Pièces jointes

  • Annexe doc forum.xlsm
    95.4 KB · Affichages: 8

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Nel,
D'après ce que j'ai compris uniquement pour le masquage, démasquage ...
Il faut tout démasquer avant de remasquer, par ex avec :
VB:
If Not Intersect(Target, Range("B3")) Is Nothing Then
  Application.ScreenUpdating = False
  Rows("8:18").Hidden = False
  ...
  la suite du code
 
  ET
 
If Not Intersect(Target, Range("B21")) Is Nothing Then
  Application.ScreenUpdating = False
  Rows("26:36").Hidden = False
    ...
  la suite du code
 

Pièces jointes

  • Annexe doc forum (1).xlsm
    91.3 KB · Affichages: 5

Nel'

XLDnaute Nouveau
Bonjour Nel,
D'après ce que j'ai compris uniquement pour le masquage, démasquage ...
Il faut tout démasquer avant de remasquer, par ex avec :
VB:
If Not Intersect(Target, Range("B3")) Is Nothing Then
  Application.ScreenUpdating = False
  Rows("8:18").Hidden = False
  ...
  la suite du code
 
  ET
 
If Not Intersect(Target, Range("B21")) Is Nothing Then
  Application.ScreenUpdating = False
  Rows("26:36").Hidden = False
    ...
  la suite du code
Merci Sylvanu. Je regarderais lundi et ferais un retour. Je n'ai pas Excel de chez moi (je viens de rentrer). Je ne pensais pas avoir une réponse si vite :)
 

Nel'

XLDnaute Nouveau
Bonjour,

Pour la partie masquage/démasquage, c'est tout bon (question : pour quel motif a-t-on besoin de préciser "Application.ScreenUpdating = False" pour les lignes alors que pour les colonnes, cela fonctionne sans ?)

Il me manque à présent le copier/coller des deux premières feuilles sur la troisième.
J'avais tenté quelque chose à la suite du code de chaque feuille (si je me souviens bien) :
Sub CopierEtCollerValeurs()

Sheets("nom de la feuille active").Range("case à copier").Copy
Sheets("nom de la feuille cible").Range("case à coller").PasteSpecial Paste:=xlPasteValues

End Sub

Cela avait fonctionné mais le masquage/démasquage des lignes de la feuille cible ne suivait pas.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Je n'ai traité que ce point
uniquement pour le masquage, démasquage ...
Je n'ai rien compris à votre fichier en particulier a quoi servent les feuilles dites "masqué" et comment s'articule tout ça. D'autant que sur XL2007 je n'ai pas la fonction "TEXTAFTER" et donc je me retrouve avec plein de "#NOM?" donc inexploitable.
pour quel motif a-t-on besoin de préciser "Application.ScreenUpdating = False"
"Application.ScreenUpdating = False" ne sert à rien pour l'exécution des macros.
Il permet simplement , comme son nom l'indique, de figer l'écran.
Cela permet d'accélérer beaucoup les calculs.
Le rafraichissement de l'écran s'effectue à la sortie de la macro, c'est pour ça que "Application.ScreenUpdating = True" est inutile.
 

Nel'

XLDnaute Nouveau
Re,
Je n'ai traité que ce point

Je n'ai rien compris à votre fichier en particulier a quoi servent les feuilles dites "masqué" et comment s'articule tout ça. D'autant que sur XL2007 je n'ai pas la fonction "TEXTAFTER" et donc je me retrouve avec plein de "#NOM?" donc inexploitable.

"Application.ScreenUpdating = False" ne sert à rien pour l'exécution des macros.
Il permet simplement , comme son nom l'indique, de figer l'écran.
Cela permet d'accélérer beaucoup les calculs.
Le rafraichissement de l'écran s'effectue à la sortie de la macro, c'est pour ça que "Application.ScreenUpdating = True" est inutile.
Merci pour cette précision.

Je vous donne un exemple : le nombre d'heures réalisées par une équipe est actuellement effectué sur une semaine. Le service souhaite revoir les horaires d'ouverture au public. Pour cela, un nouveau cycle est projeté, sur deux semaines cette fois avec division de l'équipe en deux équipes (quand l'une sera sur la semaine 1 l'autre sera sur la semaine 2).

Il faut donc sélectionner le nombre de semaine(s) du cycle actuel (1) et du cycle projeté (2) pour ensuite compléter les horaires.

1730109684767.png


1730109713132.png


Ces éléments doivent au final apparaitre sur une troisième feuille qui synthétise les informations qui sera présentée en commission.

1730109980217.png

J'aimerais leur éviter de sélectionner le nombre de semaines sur la troisième feuille.
 

Discussions similaires

Statistiques des forums

Discussions
314 840
Messages
2 113 469
Membres
111 873
dernier inscrit
ouaniiis