XL 2013 consolidation données

mix770

XLDnaute Impliqué
Bonjour le Forum,
j'ai besoin d'aide et surtout de vos talents :)

j'ai un tableau Excel avec 12 mois et 30 lignes, sur chaque mois j'ai besoin de collecter sur un tableau les personnes qui ont un motif d'absence sur 2 codes (CAP-IMJ) et les périodes.
voir PJ, explication, une personne peut avoir été absente la première semaine et la troisième sur ce code cela veut dire qu'il faut autant de ligne que de plage d'absence.
ex: absent code cap du 2 au 20 janvier une ligne, si coupure dans la période une nouvelle ligne.


je cherche au plus simple, je mettrai un tableau par mois il reporte le code sur la ligne dans ce tableau je fais une recherche v pour associer l'intitulé au code.

je sais que je demande beaucoup, je suis désolé mais je coince.

merci beaucoup à vous,
 

Pièces jointes

  • test Recherche Code 2.xlsm
    73.1 KB · Affichages: 20

mix770

XLDnaute Impliqué
job75,

j'ai testé les nouvelles lignes sans verrouiller, cela marche, j'ai testé en ne vérouillant que la page cela marche, je n'ai pas vérifier encore la MFC.

Quand je lance la macro qui verrouille tous les onglets, cela bloque, quand je reviens vers l'onglet "Format_Act_P" j'ai un MSG "code 1004" erreur définie par l'application ou par l'objet, cela doit être un Pb avec ma macro (ci dessous).

enfin pour que la macro se relance de nouveau je dois aller dans:

Private Sub Worksheet_Activate()
Worksheet_Change [A1] 'lance la macro
End Sub

* et faire exécution dans VBA pour que cela fonctionne
j'ai remarqué que lorsque je verrouille tous avec la macro l'ensemble des onglets se verrouillent, lorsque je déverrouille avec la macro, l'onglet "Format_Act_P" reste verrouillé.

Sub Locked()
' Protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
Dim Motdepasse As String
Motdepasse = InputBox("Entrer le mot de passe :", "Mettre la protection sur toutes les feuilles", "")
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="DRM_BPE_2020"
Next i
End Sub

Sub Unlocked()
' Déprotection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
Dim Motdepasse As String
Motdepasse = InputBox("Entrer le mot de passe :", "Oter la protection de toutes les feuilles", "")
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).unprotect Password:="DRM_BPE_2020"
Next i
End Sub

----
j'ai une autre macro qui débloque une zone puis la re bloque, est ce qu'il faudrait faire pareil ?
voir ci dessous

Sub impression_ARTT_1()
If MsgBox("Attention !!! l'impression verrouille définitivement le Tableau toute modification devra passée par un administrateur, vérifiez bien les données de cet agent. Voulez vous continuer ? ", vbYesNo, "Demande de confirmation !!") = vbYes Then
With Sheets("TABLEAUX_RTT")
.Select
.unprotect "DRM_BPE_2020"
.Range("A1:AG41").PrintOut
.Range("C18:AG23,C25:AG30").Locked = True
.Protect
End With
End If
End Sub

je suis désolé, je cherche à comprendre.
je dois m'absenter je reviens vers 21h00.
 

mix770

XLDnaute Impliqué
je sais que c'est illusoire, le but est surtout pour les utilisateurs de ne pas me dézinguer une formule, VBA ou objet.
jusqu'à présent je n'ai pas eu de cas d'un petit malin qui voulait bidouiller.

j'ai une question, si je laisse cet onglet masqué, il ira chercher le mois via macro et édition en PDF via macro.
y a t'il un moyen avec ma macro de protection de tout protéger sauf l'onglet "format..."?
sinon je vais bloquer onglet par onglet et laisser celui ci libbre.

je cherche si je trouve je le publie
 

mix770

XLDnaute Impliqué
je cherche toujours,
je verrouille qu'un seul onglet janvier, je fais la recherche sur janvier et j'ai ce code erreur qui apparaît:

tablo = w.Range("A1", w.UsedRange).Resize(, 35).Formula 'matrice, plus rapide

quand la page est déverrouillée pas de soucis, ce n'est pas un pb avec la macro de verrouillage globale je pense, avec le code 1004 stipulant un objet de quoi parle t'il ?

merci à vous
 

job75

XLDnaute Barbatruc
je viens de voir que le code prend toute la colonne "A"
Mettez vos lunettes, mon code se limite au UsedRange.

J'ai bien vu qu'entre les lignes 80 et 159 il y a des tableaux masqués mais ils n'ont pas d'importance s'ils ne contiennent pas de CAP ou IMJ.

Il n'est pas bon de limiter l'analyse à la ligne 79 car il est toujours possible d'ajouter des noms.
 
Dernière édition:

mix770

XLDnaute Impliqué
J'ai changé le code pour la plage, toujours le même problème une fois janvier verrouillé:
erreur d'exécution 1004 "erreur définie par l'application ou par l'objet".

blocage sur cette ligne:
tablo = w.Range("A1:AI79").Formula 'matrice, plus rapide.
au moins cela me fait penser que c'est pas un problème de cellule dans la plage initiale, j'ai même essayé A1:AI9 et A1:AG9, qui est le 31 du mois pour réduire au maxi.

j'ai même coché toutes les autorisations en verrouillant la feuille de janvier.
c'est donc bien uniquement lié au verrouillage, mais pourquoi puisqu'il n'y a pas de modifications, il va juste chercher les éléments sur janvier.

ca me rend dingue !!
 

job75

XLDnaute Barbatruc
Effectivement avec .Formula il y a bug quand la feuille est protégée.

Je l'avais mise en cas de valeurs d'erreur dans la plage (il y en a sous la ligne 79).

Alors utilisez simplement :
VB:
tablo = w.Range("A1:AI79") 'matrice, plus rapide
Comme il y a eu bug fermez et rouvrez le fichier pour tester.
 

mix770

XLDnaute Impliqué
Job75,

SUPER !!!!!
c'est génial, ça marche !

vraiment merci beaucoup, si je pouvais je vous offrirai le champagne !!

c'est Top, je vais abandonner la macro qui verrouille tous les onglets car du coup elle verrouille aussi celui "Format_Act".
un grand merci et respect pour la maitrise et surtout pour la patience.
bien cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 502
dernier inscrit
talebafia