Fonction personnalisée

Bonjour,

je voudrais savoir s'il est possible de créer une fonction personnalisée pour qu'une cellule se remplisse automatiquement de la même manière qu'une cellule d'un autre classeur, en conservant le contenu et surtout la couleur de fond.

Je m'explique, j'ai un planning central contenant une 30aine de sites avec une 10aine d'agents par site, et 12 feuilles pour chaque mois. Toutes les modifications d'horaires sont faites sur ce planning qui à disposition de tous les agents..

Pour chaque site, j'ai ensuite un planning réduit ne concernant que le site. Tous ces plannings sont construits de la même manière. Je souhaiterais que ces plannings site se complètent automatiquement en fonction du planning général. C'est impossible à gérer manuellement et je ne pensais, tout en étant un grand débutant en vba, qu'une fonction personnalisée serait la meilleure solution. En effet, une macro devrait être adaptée à chaque planning de site puisque les cellules cibles sont différentes à chaque site.

Merci par avance pour votre aide.

Bonjour matt31

pas facile de te répondre sans exemple, mais peut-être pas une fonction, une procédure se trouvant dans les plannings site et qui par exemple avec un bouton s'autofabriquerait en allan chercher les données dans ton planning général?

A voir!

merci pour ta réponse, j'ai voulu mettre un exemple mais plantage systématique du forum tout à l'heure.

Cette fois c'est bon.

Par contre, que ce soit pour mon idée (pas forcément réalisable) ou la tienne, je ne sais pas faire, je suis vraiment débutant en macro... toute aide sera donc fort utile.

29planning-2011.zip (8.82 Ko)
20site-1.zip (5.29 Ko)
14site-2.zip (5.17 Ko)
18site-3.zip (5.28 Ko)

Re bonjour

Pas beaucoup d'explication dans mon code, pas le temps, mais si tu en as besoin!!

à l'ouverture du fichier plan.xls il se met a jour de tous test palnning.

il suffit dit mettre 12 feuille vierge nommées janvier,fevrier.....

je n'utilise pas ici ton planning

34matt31.zip (42.58 Ko)

bon en fait, je n'y comprends pas grand chose mais j'ai l'impression de ne pas m'être correctement exprimé

je ne veux pas que planning (ou plan pour toi) se mette à jour en fonction des plannings site mais l'inverse. J'ai planning général et je voudrais que chaque planning site se remplisse en fonction des éléments trouvés dans planning pour chaque site.

Pour la macro, je n'y comprends pas grand chose....

re

J'avais effectivement mal compris.

Regarde ce nouveau zip.

A chaque fois que tu click tu regénère l'ensemble des fichiers site

16matt31.zip (26.78 Ko)

je te remercie ça à l'air d'être exactement ça.

Je vais essayer de tout comprendre, de l'adapter à mes besoins et de te tenir informé. Merci beaucoup

Le code avec quelques explications

Sub génère()

'définition d'un tableau avec la liste des site et se terminant par fin

'Ce tableau pourrait être généré autrement

listesite = Array("SITE 1", "SITE 2", "SITE 3", "fin")

'définition du chemin du répertoire dans lequel tu travailes

chemin = ThisWorkbook.Path & "\"

'pour chaque site

For n = 0 To UBound(listesite) - 1

'Ouverture du modèle comprenant les 12 feuillses

Set fichier = Workbooks.Open(chemin & "modèle.xls")

'Pour chaque feuille du planning général

For Each feuille In ThisWorkbook.Sheets

'définition de la zone concernant le site

deb = feuille.Columns(1).Find(listesite(n)).Row + 1

fin = feuille.Columns(1).Find(listesite(n + 1)).Row - 1

Set zone = feuille.Rows(deb & ":" & fin)

'définition du mois, du nom du site, et de la zone commune (zone de titre)

mois = feuille.Name

site = listesite(n)

Set zonetitre = feuille.Rows("2:4")

Set zone1 = Union(zonetitre, zone)

'insertion des données dans le modèle en fonction du mois (choix de la feuille du modèle

zone1.Copy (fichier.Sheets(mois).Rows(2))

fichier.Sheets(mois).Range("b1") = mois

fichier.Sheets(mois).Range("a4") = site

'suppression des messages d'alertes disant que tu vas effacer un fichier existant

Application.DisplayAlerts = False

Next

'sauvegarde et dermeture du fichier

fichier.SaveAs (chemin & site & ".xls")

fichier.Close

Next

je te remercie ça marche impecc et j'ai réussi à adapter à mon fichier.

Toutefois une question encore, est-il possible d'exclure une feuille de la procédure?

En fin de classeur, après toutes les feuilles de mois, j'ai une feuille récapitulative où je n'ai pas les sites mais juste un décompte des CA et RTT par agents et je ne voudrais pas que ce fichier apparaisse sur les plannings site.

Merci encore

Bonjour Mat31

Il te suffit d'exclure le nom de ta feuille "rédap" après le

for each feuille in thiswohbook.sheets

if feuille.name<>"récap") then

end if

en fait je cherchais un truc vachement compliqué... Je te remercie beaucoup.

Rechercher des sujets similaires à "fonction personnalisee"