Calendrier
Bonsoir le forum,
Je joins le calendrier sur lequel je travaille avant de l'intégrer au reste car je bug sur une dernière fonction qui marche à moitié.
Le calendrier fonctionne sur une formule rechercheV et du VBA
.L'intégralité du code :
Formules :
G21 =SI(RECHERCHEV($G$19;A:D;2;0)="";"Rien pour ce jour";RECHERCHEV($G$19;A:D;2;0))
G23 =SI(RECHERCHEV($G$19;A:D;3;0)="";"Rien pour ce jour";RECHERCHEV($G$19;A:D;3;0))
G25 =SI(RECHERCHEV($G$19;A:D;4;0)="";"Rien pour ce jour";RECHERCHEV($G$19;A:D;4;0))VBA dans module :
Sub recherche()
Dim Range_AA As Range
Dim Recherche_str As Date
Recherche_str = Range("G4").Value ' attribuer g4 à la recherche
Set Range_AA = Range("A:A").Find(Recherche_str) ' rechercher dans la colonne A:A
Range("G10").ClearContents ' Effacer la console d'erreur
If Range("G2, G4") = "" Or Range("G6, G8") = 0 Then ' vérifier qu'il y a un titre, une date avant de continuer ou 0 .
Range("G10") = "Completer les données."
Else
If Not Range_AA Is Nothing Then ' variable contient une date
If Range_AA.Offset(0, 1) = "" Then ' si la cellule dans la colonne à droite est vide
Range_AA.Offset(0, 1) = Range("G2").Value ' remplir cette cellule avec le contenu de g2
ElseIf Range_AA.Offset(0, 2) = "" Then
Range_AA.Offset(0, 2) = Range("G2").Value
ElseIf Range_AA.Offset(0, 3) = "" Then
Range_AA.Offset(0, 3) = Range("G2").Value
Else
Range("G10") = "Complet pour ce jour" ' toutes les conditions on échouées
End If
Else
Range("G10") = "Date non trouvée" ' La variable ne contient rien et la boucle passe en else
End If
End IfTout marche sauf quand je cherche à répéter une action pendant x jours et tous les x jours. Ca marche quand le nombre
est grand mais pas quand c'est 0 car ca plante "for to" et/ou 1 car ca s'incrémente à la date de l'action qui est unique, ce qui
la reporte au lendemain.
J'ai sorti ce code défectueux pour que le fichier marche sur ce qui est normalement terminé :
'dim xjours as integer
'For xjours = 0 To Range("G6").Value Step Range("G8").Value' le nombre de jours et la fréquence
' range_AA.Offset(0 + xjours, 1) = Range("G2").Value ' écriture de la valeur en prenant en compte nombre de J et la Frq
'Next xjoursFichier joint ▼
Merci
Bonjour,
A tester
'dim xjours as integer
If Range("G6") > 0 And Range("G8") > 0 Then
For xjours = 0 To Range("G6").Value Step Range("G8").Value ' le nombre de jours et la fréquence
Range_AA.Offset(xjours, 1) = Range("G2").Value ' écriture de la valeur en prenant en compte nombre de J et la Frq
Next xjours
End If
Cordialement.
Bonjour cagouman,
Ca marche, j'ai supprimé la condition or Or Range("G6, G8") = 0 Then au début du code intégrer ta condition
dans les 3 if, ca fonctionne. Je te remercie
Sub recherche()
Dim Range_AA As Range
Dim Recherche_str As Date
Recherche_str = Range("G4").Value ' attribuer g4 à la recherche
Set Range_AA = Range("A:A").Find(Recherche_str) ' rechercher dans la colonne A:A
Range("G10").ClearContents ' Effacer la console d'erreur
If Range("G2, G4") = "" Then ' vérifier qu'il y a un titre, une date avant de lancer continuer.'Or Range("G6, G8") = 0 Then
Range("G10") = "Completer les données."
Else
If Not Range_AA Is Nothing Then ' variable contient une date
If Range_AA.Offset(0, 1) = "" Then ' si la cellule 1 colonne à droite est vide
If Range("G6") > 0 And Range("G8") > 0 Then
For xjours = 0 To Range("G6").Value Step Range("G8").Value
Range_AA.Offset(xjours, 1) = Range("G2").Value
Next xjours
Else
Range_AA.Offset(0, 1) = Range("G2").Value ' remplir cette cellule avec le contenu de g2
End If
ElseIf Range_AA.Offset(0, 2) = "" Then
If Range("G6") > 0 And Range("G8") > 0 Then
For xjours = 0 To Range("G6").Value Step Range("G8").Value
Range_AA.Offset(xjours, 2) = Range("G2").Value
Next xjours
Else
Range_AA.Offset(0, 2) = Range("G2").Value ' remplir cette cellule avec le contenu de g2
End If
ElseIf Range_AA.Offset(0, 3) = "" Then
If Range("G6") > 0 And Range("G8") > 0 Then
For xjours = 0 To Range("G6").Value Step Range("G8").Value
Range_AA.Offset(xjours, 3) = Range("G2").Value
Next xjours
Else
Range_AA.Offset(0, 3) = Range("G2").Value ' remplir cette cellule avec le contenu de g2
End If
Else
Range("G10") = "Complet pour ce jour" ' toutes les conditions on échouées
End If
Else
Range("G10") = "Date non trouvée" ' La variable ne contient rien et la boucle passe en else
End If
End If
End Sub