Copie automatique de données dans plusieurs onglets - A l'aide !!!!

Annasteph

XLDnaute Nouveau
Bonjour à tous,
Je suis entrain de mettre en place un planning de gestion du personnel pour plusieurs unités

Voici ma problématique:

J’ai une colonne comportant des noms de personnel dans une feuille nommée « personnel » (cellules A10 à A45)

J’aimerai qu’une fois avoir saisie cette liste, pouvoir activer une macro permettant de copier l’ensemble des noms dans 12 onglets différents dans des cellules spécifiques (les unes en dessous des autres). Exemple : onglet 2 (janvier), cellule (A3) jusqu’à cellule (A37).
Les onglets correspondants aux mois.

Grosso modo, lorsque mon état du personnel changera, je pourrais alors par cette macro mettre à jour mes plannings mensuels en terme de personnels disponibles

Ensuite, j’aimerai que lorsque la saisie des noms s’arrête par exemple en A35 dans l’onglet « personnel », pouvoir masquer la ligne correspondante et les suivantes dans les onglets mensuels afin de ne pas alourdir les plannings pour rien et d’optimiser l’impression.
Je pourrais le faire en manuel mais ce fichier est destiné à un personnel débutant et je désire protéger le fichier au maximum et donc interdire le maximum de droit.

J’ai essayé de commencer avec la macro suivante :

Sub maj_personnel()

Dim n As Byte, i As byte
For n=2 to 13 ' feuille janvier à décembre
Sheets(n).Select
ActiveSheet.unprotect (mon password)
For i=3 to 37 ' les lignes
ActiveSheet.Range (A,i).Select
Selection.Character.Text=Sheets("personnel").Cells (i + 8,1).Value ' correspond à la cellule A11
Next i
Activesheet.protect (mon password)
next n
Sheets ("personnel").Select
End Sub


Et bien sûr, cela ne marche pas, même si je crois ne pas être trop loin, en fin je pense.
Concernant, le fait de masquer les lignes en fonction de la valeur « » dans la liste initiale relève pour moi du mystère.
Mot de passe : FATAL

Merci par avance....

Stéphane
 

Pièces jointes

  • Excell download.xls
    59 KB · Affichages: 46
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Copie automatique de données dans plusieurs onglets - A l'aide !!!!

Bonjour.
Votre macro plante parce que vous avez apparemment appliqué à la méthode Range la syntaxe requise pour la méthode Cells.
Il devrait y avoir moyen de l'écrire beaucoup plus simplement:
VB:
Sub MajPersonnel()
Dim TV() As Variant, N As Long
TV = Feuil02.[A10:A45].Value
For N = 2 To 13: Worksheets(N).[A2:A37].Value = TV: Next N
End Sub
À +
 

Annasteph

XLDnaute Nouveau
Re : Copie automatique de données dans plusieurs onglets - A l'aide !!!!

Rebonjour

Tout d'abord, merci de t'être penché sur mon problème

J'ai transposé la macro fournie et je me retrouve face à un bug. J'ai essayé tant bien que mal de le résoudre mais impossible....(objet requis erreur 1004) -J'ai pourtant créé mes douze onglets nécessaires...
Quelqu'un pourrait m'éclairer siouplaît ?

Une deuxième question: est-il possible grâce a cette méthode de lui dire de masquer les lignes correspondantes dans les onglets mensuels si il rencontre des cellules vides dans la zone de données ? (onglet personnel)

Merci par avance
 

Dranreb

XLDnaute Barbatruc
Re : Copie automatique de données dans plusieurs onglets - A l'aide !!!!

Peut-être le CodeName de la 1ère feuille n'est il pas Feuil02 dans votre vrai classeur ? Vérifiez dans son projet VBA.
Essayez comme ça:
VB:
Sub MajPersonnel()
Dim TV() As Variant, N As Long
TV = LeBonCodeNameDeLaFeuilleSource.[A10:A45].Value
For N = 2 To 13
   With Worksheets(N).[A2:A37]
      .Cells.EntireRow.Hidden = False
      .Value = TV
      .SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
      End With
   Next N
End Sub
 

Annasteph

XLDnaute Nouveau
Re : Copie automatique de données dans plusieurs onglets - A l'aide !!!!

Bonsoir...

Cela marche, c'est parfait...vraiment un grand merci
J'ai juste un petit problème lié à la déprotection de mes onglets et à la reprotection. Je n'arrive pas à déprotéger les onglets...ni à les reprotéger

Mon mot de passe est en début de module
Et d'habitude je mets dans les macros

Activesheet.unprotect (pwd)

et en fin de macro
Activesheet.protect (pwd)

Mais la, cela ne fonctionne pas....est ce le bon code dans cette macro-ci, ou faut-il les placer à un endroit particulier ?

Encore merci
 

Dranreb

XLDnaute Barbatruc
Re : Copie automatique de données dans plusieurs onglets - A l'aide !!!!

Bonsoir.
Je ne sais pas, ça peut venir d'un tas de facteurs. D'abord la protection n'empêche que la modification des cellules verrouillées.
Ensuite il est possible de restreindre à ce point les éléments qui en font l'objet que ça revient pratiquement à ne plus rien protéger. Regardez dans l'aide la méthode Protect. À ce propos, il y a moyen de travailler dans les macros sans enlever la protection. Au contraire il faut la confirmer à l'ouverture du classeur (Sub Workbook_Open dans ThisWorkbook), mais avec UserInterfaceOnly:=True
cordialement.
 
Dernière édition:

Annasteph

XLDnaute Nouveau
Re : Copie automatique de données dans plusieurs onglets - A l'aide !!!!

Désolé pour la réponse tardive mais merci à toi pour toutes ces infos. Cela m'a bien servi.

SI tu as encore la patience de m'éclairer encore sur cette macro, je te transmets une de mes questions.

En fait, si je remplie l'ensemble de la plage de données, la macro ne me fait pas passé d'un onglet à l'autre et me bloque ici:

.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True

Si j'ai bien compris, vu qu'il ne trouve pas de cellule vide dans ce cas, il bug. Est-il possible de rajouter une condition du type:
Si tu rencontres cellule vide, tu caches les lignes correspondantes (comme actuellement), sinon, tu passes au mois suivant....

Merci de ton aide en tout les cas
 

Dranreb

XLDnaute Barbatruc
Re : Copie automatique de données dans plusieurs onglets - A l'aide !!!!

Bonsoir.
Bof
Mettez On Error Resume Next devant
et On Error Goto 0 derrière.
Inutile de gérer ce cas, puis-qu’alors l'instruction ne doit de toute façon pas avoir de conséquence.
Mais n'en faites pas une habitude: normalement il faudrait un If Err Then derriere l'instruction qui peut provoquer l'erreur.
Cordialement.
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 298
Membres
103 171
dernier inscrit
clemm