Probleme sous excel

Lala -  
 amigo -
Bonjour,
je sui larissa, je découvré votre site et il est vraiment primordial pour aider lew gens en difficulté !!
Aujrdui j'ai moi meme un petit probleme que j'espere que vous pourriez le résoudre !!!

Alr je suis sous excel, et je dois automatiser mon tableau de données a partir de la date cad qu'a chaque changement de mois, on doi prendre en compt les jours etc...ceci est réglé enfin je crois mais mon probleme est d'initilaiser des cases précises de mon tableau et je bloque vraiment la dessus !!!

Encor merci d'avance !!!
A voir également:

74 réponses

lala
 
Bonjour bonjour c'est re mwa,

alors j'ai donc comme tu m'as dit, modifier les formules nécessaires et j'ai mis la procédure initialise_mois() en commentaire car il ne m'est d'aucune utilité en fait, mais bon je l'ai gardé toujours au cas ou qui sait !!!

Donc a partir de la, on peut donc continuer il n'ya a pas de problème, je pense qu'on en étais à la mise à jour automatique de la feuille a chaque changement de mois !!!
0
lala
 
Aussi, je souhaiterais savoir comment tu t'y est pris pour les procédures "copier-feuille" et "masquer_tableau" au nuveau du code, la démarche enfin juste un petit détail pour pouvoir comprendre si c'est poissible merci !!!
0
lala
 
Alors je me suis chargée de faire l'automatisation du changement de date avec toutes les fonctionalités qui vont avec et

j'y suis arrivée sans problème, il m'a fallu pour cela simplement me baser sur le mm principe de la derniere fois et le tour est joué !!!

Par contre j'aimerais toujours savoir pour les procédures si possiblle merci bcp !!!
0
amigo
 
Bonjour,

D'accord, alors voila la procédure qui initialise le tableau à chaque changement de mois.

Comment ça marche:

- A chaque ouverture du classeur on vérifie dans toutes les feuilles si le tableau du mois en cours exite. On regarde dans la cellule "B3", donc il ne faut pas que la date initiale soit déplacée ou effacée.(D'ailleurs il serait bon de protéjer les formules et quelques cellules importante du tableau)

- Si le mois existe alors on active la feuille et c'est tout.

- Si le mois n'exite pas, on demande confirmation, et on copie la feuille du mois précedent (ou le mois le plus proche) puis on initialise le tableau au mois courant (c'est la procédure copier_feuille qui s'en charge).

Cette procédure est à placer dans le code de ThisWorkbook (supprimer l'ancienne Workbook_Open)

Pour faire le test, suipprimer la feuille Juin 2008, enregistrer, fermer, reouvrir.
Le message de confirmation s'affiche, répondre oui. La feuille juin 2008 est ajoutée. Enregistrer, fermer, reouvrir.
Aucun message ne doit apparaitre.

NB: tu peux ajouter ou supprimer des lignes du tableau entre *debut* et *fin*
Private Sub Workbook_Open()
Dim Date_Init As Date, Date_jour As Date
Dim Mois_Init As Integer, Mois_Courant As Integer
Dim Rep As Integer
Dim nbr_feuille As Integer, idx As Integer, cur_feuille As Integer

'index de la feuille active
cur_feuille = ThisWorkbook.ActiveSheet.Index
'nombre de feuilles du classeur
nbr_feuille = ThisWorkbook.Sheets.Count
'date du jour
Date_jour = Date
Mois_Courant = Month(Date_jour)

'rechercher si la feuille du mois en cours existe
'si existe alors activer et quitter
For idx = 1 To nbr_feuille
Mois_Init = Month(ThisWorkbook.Sheets(idx).Range("B3").Value)
If Mois_Init = Mois_Courant Then
    ThisWorkbook.Sheets(idx).Activate
    Exit Sub
End If
Next

'la feuille du mois en cours n'exite pas
'rechercher la feuille du mois précédent pour copie
Date_Init = ThisWorkbook.Sheets(1).Range("B3").Value
cur_feuille = 1
For idx = 1 To nbr_feuille
If ThisWorkbook.Sheets(idx).Range("B3").Value > Date_Init Then
    Date_Init = ThisWorkbook.Sheets(idx).Range("B3").Value
    cur_feuille = idx
End If
Next
'activer la feuille pour copie
ThisWorkbook.Sheets(cur_feuille).Activate
'question faut-il initialiser le mois en cours?
   Rep = MsgBox("Voulez-vous initialiser le tableau du mois de " & _
   Format(Date, "mmmm yyyy") & " ?", vbQuestion + vbYesNo, "Initialisation")
'si la reponse est OUI alors copier la feille courante et réinitialiser le tableau
   If Rep = vbYes Then Call copier_feuille

End Sub


A+.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
amigo
 
Re,

J'étais en train d'élaborer la procédure Workbook_Open et je n'avais pas vu tes précédents messages.
Tu à réuissi à faire l'automatisation par toi même, c'est bien, tu peux comparer avec ce que j'ai fait. Il y plusieurs manières de faire, l'essentiel étant de ne pas perdre de vue l'objetif.

Comment j'écris mes macros? Je ne vais pas te faire un cours de programmation mais en gros voila ce que je fais.
Je mets au point une stratégie que je décompose en taches plus simples. c'est plus facile à mettre au point.
Ensuite j'ecris chaque procédure. quand je ne connais pas la syntaxe, j'enregistre la macro et je récupère le code que j'adapte en épurant et en ajoutant des variables. Ensuite, il suffit d'enchainer les procédures, ou de les fusionner, ça dépend.

La procédure masquer_colonnes
La stratégie (ou algorithme), c'est de repérer dans le tableau dans quelle colonnes inscrire le premier jour du mois. Il s'en suit un calcul de décalage par rapport à l'origine et en fonction du nom du jour. On réinitialise la première semaine (copie de la semaine 2 sur la semaine 1) et on place la formule initiale au bon endroit (="B3"). Ensuite on masque les colonnes qui n'appartiennent pas au mois en cours. Pareil pour la fin du tableau.

La procédure Copier_feuille
C'est assez simple, On selectionne tout le tableau, On ajoute une nouvelle feuille, On colle les cellules.
Puis on reprend le code de la procédure Effacer_tableau, et on fait appel à masquer_colonnes (pour la mise à jour du tableau). j'ai rajouté afficher_colonnes pour verifier que toutes le données à supprimer sont bien effacées, surtout les dernières lignes ou tu fais des saisies manuelles.

Si tu veux tous les détails, je te préparerais un fichier Word qui explique chaque ligne de code.

A+.
0
lala
 
Un grand merci pour les explications vraiment merci !!!
Beh s'il y a possibilité que tu me fasses le fichier word, c'est pas de refus !!!
Encore merci !!!
0
lala
 
euh aie je vien de remarquer un petit bug la, la colonne A lorque l'on dééplace le tableau vers la droite n'est pas

verrouillée ainsi que les lignes de date la, c'est embetant ca o_O' !!!
0
lala
 
Tah ne fais pas attention en fait il fallait juste fixer les volets que j'avais oublier dsl !!!
0
amigo
 
Effectivement, dans la procédure copier_feuille je n'ai pas figé les volets.
Enregistre une macro, récupère le code et place le au bon endroit... Tu peux essayer, si tu veux.
Je te prépare un fichier avec des explications, mais ça me prendra un peu de temps.
En attendant, bonne continuation.

Salut.
0
amigo
 
Bonjour,

Tu trouveras dans le fichier zip ci-joint le classeur excel de la maquette et le fichier word avec le max de commentaires.
J'ai corrigé les bogues et j'ai complété la procédure Ajouter_feuille pour figer les volets.
J'ai ajouté aussi un petit gestionnaire d'erreur pour le renomage de la feuille.

http://www.cijoint.fr/cjlink.php?file=cj200806/cijc5mRZB5.zip

En espérant ne rien avoir oublié

A+.
0
lala
 
Re,

alors la vraiment il ne peut y avoir plus complet que cela, ca va au dela de ce que j'espérais lool encore un GRAND merci amigo pour ton aide et ta patience hihi, tu m'as été vraiment d'un grand secours je ne sais pas si je serais y arriver toute seule ca c'est sur !!!

Encore un grand merci et je te dis à très bientot !!! Et bonne continuation à vous tous et au site qui est vraiment EXCELLENT !!!
0
lala
 
Ralalh je suis encore navrée de te déranger mais j'ai un petit je ne vois pas du tout comment faire !!
Je cherche a masquer uniquement les colonnes de date qui parte du 01 jusqu'a la fin du mois pour ensuite imprimer les cases qui restent et enfin remettre toutes les colonnes, si tu peux m'indiquer la démarche a suivre ste plé !!!
0
lala
 
Tah mwa je dis que c'est abusé, on me demande d'imprimer les cases restantes et ensuite revenir a l'état initial du tableau, encore j'ai réussi a faire l'histoire de compacter le tableau puis le ramener à son état intial mais la pour imprimer je suis bien mwa la si tu sais comment le faire, tu pourrais me montrer le code ste plé !!!
0
amigo
 
Bonjour,

Si j'ai bien compris, tu veux masquer la partie ou tu inscrit des "X" et imprimer le tableau, ensuite tu veux rétablir l'affichage initial.

Dons on va faire une procédure Imprimer_Tableau. Je regarde et je reviens (peut-être cet Après-Midi ou avant).

A+.
0
amigo
 
Re,

Je peux te proposer déja deux procédures, l'une pour réduire l'affichage et l'autre qui rétablit l'affichage.
Pour imprimer , c'est plus délicat, ça va dépendre de la mise en page, du format de la page ...
Il faudrait que fasses cette macro avec enregistrer une macro. Quand c'est au point, je te dirais ou la placer.
Sub reduire_affichage()
    Columns("F:BM").Select
    Selection.EntireColumn.Hidden = True
End Sub

Sub Rétablir_affichage()
    afficher_colonnes
    masquer_colonnes
End Sub


A+.
0
lala
 
Ca y est j'ai tout conclue correctement !!! Beh amigo tu sais quoi la j'ai une tache a faire qui tient d'un niveau conséquent j'aurais encore besoin de toi si tu es toujours d'accord !!!

Alors la, mm pour l'explication cela est délicat !!!

Donc j'ai un tableau avec des dates définies pour chak mois, des dates de congé pour etre plus précise et ce que je dois faire c'est que tu vois je dois reporter ces dates en cases colorées des lors qu'une nouvelle feuille est crée, je te donne un exemple :

regarde pr le mois de juin, il y a d cases mauves pour les congés ben ce sont des dates bien précises é en fait j'ai un tableau définit avec des dates pour le mois de juin, juillet, aout etc....et je dois reporter ces dates dans le tableau du mois de juillet lorqu'il est créé, dis moi si j'ai été assez claire sinon je tenterais de me reformuler !!!
0
amigo
 
OK,

Je résume, tu as un tableau avec des dates de congés, et tu voudrais visualiser par des couleurs les périodes de congés sur le tableau qu'on a vu ensemble.

C'est faisable, il me faudrait connaitre le format du tableau avec les dates, mieux si je pouvais avoir une copie sans données confidentielles.

A+.
0
lala
 
Alors je te ici le lien : http://www.cijoint.fr/cjlink.php?file=cj200806/cijnJ0shJs.xls.

Voila c'est bien la le principe, lorsque qu'on ouvre la nouvelle feuille du mois de juillet, il y des cases mauves qui doivent apparaitre selon les dates indiquées dans le tableau de congés.

J'ai profité aussi pour te faire un exemple de ce que ca doit en résulter en fait et apparamment ce qu'il faut c'est que lors du remplissage manuel du tableau des congés par la suite pour les mois a venir, que cela soit pris en considération mais on peut deja commencer par les 2 premiers présentés.

Je t'explique, les dates des mois de juillet et aout sont définis et pour le mois d'octobre, novembr etc... ils seront rempli ultérieurement mais je pense que si l'on fais pour un exemple, cela doit fonctionner pour tout le reste !

Voila j'espere que mes explications ont été claires et simple Merci !!!
0
amigo
 
Bonjour,

En observant le tableau congés, je m'aperçois qu'on ne peut y inscrire qu'une seule période par agent et pour un mois donné.
Que se passe-t-il, si une personne demande plusieurs congés pour le même mois?
Que se passe-t-il si la période de congés est à cheval sur deux mois?
Est-ce que ces éventualités sont à envisager?

Je pense qu'il faut revoir la mise en forme de ton tableau de saisie. Pose la question autour de toi pour savoir quelle serait la présentation qui répondrait le mieux aux besoins.

J'attends confirmation

A+.
0
lala
 
La mise en page du tableau il semblerait qu'il soit tel qu'il est et en ce qui concerne les éventualités, effectivement la

première une personne ne pourra pas avoir 2 périodes de congés dans le même mois et pour le chevauchement il suffit

de faire un rajout bout à bout cad : une personne qui prend ses congés du 25/06/2008 au 05/07/2008 par exemple,

dans le tableau on aura : 25/06/2008 - 31/06/2008 pour le mois de juin et 01/07/2008 - 05/07/2008 pour le mois de

juillet !!!

Voila j'espere que mon explication fut assez claire lool !!

Merci !!!
0