Modifier code VBA arf
Bonjour
j'essaye d'adapter un code sur ma feuille sans y parvenir !
je sollicite un peu d'aide en ce dimanche soir
Sub CreePlan()
Application.ScreenUpdating = False
Set BD = Sheets("BD")
[CongésSem1].ClearContents
[CongésSem1].Interior.ColorIndex = xlNone
[CongésSem2].ClearContents
[CongésSem2].Interior.ColorIndex = xlNone
For lig = 2 To [A65000].End(xlUp).Row
Nom = BD.Cells(lig, 1)
début = BD.Cells(lig, 2)
fin = BD.Cells(lig, 3)
typeConges = BD.Cells(lig, 4)
If Month(début) < 8 Then Set p = Sheets("Congés1") Else Set p = Sheets("Congés2")
Set temp = p.[H:H].Find(what:=Noms)
If Not temp Is Nothing Then
ligPlan = temp.Row
n = fin - début + 1
Application.EnableEvents = False
Application.EnableEvents = False
[MesCouleurs].Find(typeConges, LookAt:=xlWhole).Copy
For i = 0 To n - 1
If Month(début + i) < 8 Then Set p = Sheets("Congés1") Else Set p = Sheets("Congés2")
d = début - p.Cells(37, 36) + 36
p.Cells(ligPlan, d + i) = typeConges
p.Cells(ligPlan, d + i).PasteSpecial Paste:=xlPasteFormats
Next i
Application.EnableEvents = True
End If
Next lig
End SubJe souhaite recopier la base de donnée, dans les ongles conges1 et congés2, c'est la macro"créer plan avec BD"
voici le fichier
http://cours83infirmier.fr/EXCEL/New%20planning%20jeff%2060.xls
merci du support
Précision, j'ai touché la ligne pour adapter sur ma feuille mais apparemment c'est pas bon mais je comprend pas pourquoi....
d = début - p.Cells(37, 36) + 36Bonsoir
Cela ne va pas fonctionner
Dans la base de données tu as des prénoms, mais tu as mis un nom générique dans les feuilles Congés1 et Congés2
Pour le moment on ne peut rien faire
Sinon j'ai mis Louis en 1er et ça a l'air de fonctionner
Ah oui merci je comprend mon erreur à présent
j'ai modifié cela fonctionne, par contre ma liste de noms doit etre ecrite directement sur "congés1" pour fonctionner et non "renvoyé" à partir d'une autre page sinon cela ne marche pas apparement avec la formule matricielle, ça m'embete un peu.....
Y- a t-il une méthode pour y arriver car j'utilise ma liste de noms sur d'autres feuilles aussi et j'ai besoin de la renseigner à part ?
Et aussi je souhaite recopier uniquement l'intérieur de la cellule et la couleur de la police mais pas toute la cellule, je dois modifier cette ligne comment puis je faire ?
Ma liste de noms est sur une feuille nommée "Paramétrage" dans la colonne "i"
[MesCouleurs].Find(typeConges, LookAt:=xlWhole).CopyOu alors quelle macro de recopie puis je utiliser pour venir ecrire dans une cellule, le nom et le prénom sur la feuille "congés1" issue de ma feuille paramétrage ?
Bonjour
Je ne comprends pas toutes tes questions
Zebulonzzz a écrit :Et aussi je souhaite recopier uniquement l'intérieur de la cellule et la couleur de la police mais pas toute la cellule
Si tu ne veux pas que le type d'absence s'inscrive, neutralise la ligne
[MesCouleurs].Find(typeConges, LookAt:=xlWhole).Copy
For i = 0 To n - 1
If Month(début + i) < 6 Then Set p = Sheets("Congés1") Else Set p = Sheets("Congés2")
d = début - p.Cells(37, 36) + 36
'p.Cells(ligPlan, d + i) = typeConges
p.Cells(ligPlan, d + i).PasteSpecial Paste:=xlPasteFormats
Next iEnsuite pour recopier la liste de nom utilise le lien direct
En H38 de la feuilles Congés1
=Paramètres!I2 En H38 de la feuille Congés2
=Congés1!I2 etc ... en descendant
Et pas besoin de formule matricielle
Bonjour Banzai, merci de ton support !
effectivement la formule matricielle n'est pas necessaire, donc enlevé grâce à tes conseils !
Pour la cellule, pardon je me suis mal exprimé :
en fait je veux afficher le contenu de l'absence, mais je souhaite le faire en ne "cassant" pas la mise en forme conditionnelle sur le tableau dans laquelle la recopie va etre faite.
j'espère avoir mieux formulé mon probléme, en tout cas merci de m'aider