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 If

Tout 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 xjours

Fichier joint ▼

Merci

28calendrier.xlsm (28.07 Ko)

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
Rechercher des sujets similaires à "calendrier"