Bonjour le forum,
Je sollicite ton aide aujourd'hui pour la compréhension et la réutilisation d'un code VBA ! Quelques petites explications s'imposent !
Grâce au forum et à un ami, la macro que je voulais réaliser sur un 1er tableau fonctionne parfaitement. Il s'agit de la pièce jointe "HR occupation mensuelle etc..", module 2. Après avoir présenté le fichier Excel, mon directeur souhaiterait la même macro pour le fichier d'un autre établissement. Celui-ci est un peu différent mais le principe est le même. Il s'agit de la pièce jointe n°2 (occupation mensuelle CLM). Je pensais au départ faire un copié collé du code et que tout roulerai, mais ce n'est pas le cas !
Cette partie du code venant du tableau où j'essaye d'intégrer la macro fonctionne très bien Elle me sert à copier/coller les patients qui sont encore présent à la fin du mois vers le mois suivant
La seconde partie du code est celle qui me pose souci. Celui-ci sert à vérifier la case verte et son chiffre dans la partie droite du tableau et recopie le dernier chiffre incrémenté de 1 dans l'onglet suivant à la ligne correspondant au patient (j'espère être clair)
je vais recopier le code du tableau qui marche (HR occupation mensuelle)
Ce code fonctionne parfaitement sur le premier tableau mais pas du tout sur le 2nd. Pourtant le principe est le même et je ne change qu'une seule chose c'est le colonne de NI qui devient
et encore :
ou grand "P" devient petit "p"
Je n'arrive pas très bien à comprendre le bout de code, notamment l'affectation des variables nbDayInMont et nbDayInNextMonth.
Si quelqu'un pouvait m'aider à comprendre et à corriger le code pour qu'il fonctionne sur le second tableau...
Merci d'avance
Je sollicite ton aide aujourd'hui pour la compréhension et la réutilisation d'un code VBA ! Quelques petites explications s'imposent !
Grâce au forum et à un ami, la macro que je voulais réaliser sur un 1er tableau fonctionne parfaitement. Il s'agit de la pièce jointe "HR occupation mensuelle etc..", module 2. Après avoir présenté le fichier Excel, mon directeur souhaiterait la même macro pour le fichier d'un autre établissement. Celui-ci est un peu différent mais le principe est le même. Il s'agit de la pièce jointe n°2 (occupation mensuelle CLM). Je pensais au départ faire un copié collé du code et que tout roulerai, mais ce n'est pas le cas !
Code:
For Each cel In Sheets(ni).Range("H4:H195")
If cel.Value = "" And cel.Offset(0, -5).Value <> "" Then
ad = cel.Offset(0, -5).Address
ad2 = cel.Offset(0, 3).Address
Sheets(ni).Cells(cel.Row, 3).Resize(1, 4).Copy Sheets(ni + 1).Range(ad)
End If 'fin de la condition
Next cel 'prochaine cellule de la boucle
Cette partie du code venant du tableau où j'essaye d'intégrer la macro fonctionne très bien Elle me sert à copier/coller les patients qui sont encore présent à la fin du mois vers le mois suivant
La seconde partie du code est celle qui me pose souci. Celui-ci sert à vérifier la case verte et son chiffre dans la partie droite du tableau et recopie le dernier chiffre incrémenté de 1 dans l'onglet suivant à la ligne correspondant au patient (j'espère être clair)
je vais recopier le code du tableau qui marche (HR occupation mensuelle)
Code:
For Each cel2 In Sheets(ni).Range("K4:K423")
nbDayInMonth = Day(DateSerial(Year(Date), ni + 1, 1) - 1)
nbDayInNextMonth = Day(DateSerial(Year(Date), ni + 2, 1) - 1)
If cel2.Offset(0, nbDayInMonth - 1).Value <> "" Then
ad3 = cel2.Address
cel2.Offset(0, nbDayInMonth - 1).Copy Sheets(ni + 1).Range(ad3)
Range((ad3)).Select
ad4 = cel2.Offset(0, nbDayInNextMonth - 1).Address
i = 1
For Each cel3 In Sheets(ni + 1).Range(ad3, ad4)
If cel2.Offset(0, nbDayInMonth - 1).Value <> "P" Then
cel3 = cel2.Offset(0, nbDayInMonth - 1).Value + i
i = i + 1
Else
cel3 = cel2.Offset(0, nbDayInMonth - 1).Value
End If
Next cel3
End If
Next cel2
Application.Calculation = xlCalculationAutomatic
End Sub
Ce code fonctionne parfaitement sur le premier tableau mais pas du tout sur le 2nd. Pourtant le principe est le même et je ne change qu'une seule chose c'est le colonne de NI qui devient
Code:
For Each cel2 In Sheets(ni).Range("L4:L195")
et encore :
Code:
If cel2.Offset(0, nbDayInMonth - 1).Value <> "P" Then
Je n'arrive pas très bien à comprendre le bout de code, notamment l'affectation des variables nbDayInMont et nbDayInNextMonth.
Si quelqu'un pouvait m'aider à comprendre et à corriger le code pour qu'il fonctionne sur le second tableau...
Merci d'avance
Pièces jointes
-
HR OCCUPATION MENSUELLE CHAMBRES 2013 JANVIER - AVEC MACRO.zip200.4 KB · Affichages: 22
-
HR OCCUPATION MENSUELLE CHAMBRES 2013 JANVIER - AVEC MACRO.zip200.4 KB · Affichages: 20
-
HR OCCUPATION MENSUELLE CHAMBRES 2013 JANVIER - AVEC MACRO.zip200.4 KB · Affichages: 20
-
OCCUPATION MENSUELLE CHAMBRES CLM.zip189.1 KB · Affichages: 14