Transformer une fonction "si" en VBA avec boucle

Bonjour à tous

J'aimerai transformer ma fonction "si" en vba, mais en ajoutant des boucles .

Ma fonction est: =SI(ET(date>=date_sortie;date<date_retour);1;0)

Ma formule doit se répéter à chaque jour du calendrier (date correspond à une date du calendrier, exemple: si la date est 01/01/2015, la formule doit tester cette date).

Mon calendrier va de la ligne 2 à 366, colonne A

Merci

C'est la variable "date" qui est censé être la date allant du 1/1/2015 au 31/12/2015?

Et les variables "date_sortie" et "date_retour" sont des constantes?

C'est bien la variable "date" qui va du 1/12015 au 31/12/2015.

"Date_sortie" et "date_retour" sont des variables elles aussi...

Bonjour, un exemple avec une macro, de la cellule A1 à A10 pour les dates du tableau et de B1 à D10 pour les valeurs à comparer (coloration en bleu si concordance), retire les couleurs au début de la macro au cas où il y aurait des modifications. On doit pouvoir faire mieux en terme de code, mais après essais ça à l'air de fonctionner.

Option Explicit
Dim i As Integer, j As Integer, k As Integer

Sub Macro1()
    Range("A1:D10").Select  'Sélection
    With Selection.Interior  'Retrait des couleurs des cellules sélectionnées
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With

For i = 2 To 4 'Boucle des colonnes
    For j = 1 To 10 'Boucle des lignes
        For k = 1 To 10 'Boucle de A1 à A10
            If Cells(k, 1) = Cells(j, i) And Cells(j, i) <> "" Then  'Test absence de cellules vides et si concordance
                      With Cells(j, i).Interior  'Changement de couleur de la cellule
                       .Pattern = xlSolid
                       .PatternColorIndex = xlAutomatic
                       .ThemeColor = xlThemeColorLight2
                       .TintAndShade = 0.599993896298105
                       .PatternTintAndShade = 0
                   End With
            End If
        Next k
    Next j
Next i
End Sub

Voici le code.

Une fonction avec les trois dates comme paramètres + la boucle.

La boucle met le résultat dans la colonne B (tu peux le modifier) et il faut qui tu y mets ta date_sortie et date_retour...

Function TestDate(date_principale As Date, date_sortie As Date, date_retour As Date)
TestDate = 0
If date_principale >= date_sortie And date_principale < date_retour Then TestDate = 1
End Function

Sub TesterLesDates()
Dim date_principale As Date
Dim date_sortie As Date
Dim date_retour As Date

date_sortie = "1/1/2015" 'à remplir
date_retour = "1/3/2015" 'à remplir
For i = 2 To 366
    date_principale = Cells(i, 1).Value
    Cells(i, 2).Value = TestDate(date_principale, date_sortie, date_retour)
Next i
End Sub

Voici le code.

Une fonction avec les trois dates comme paramètres + la boucle.

La boucle met le résultat dans la colonne B (tu peux le modifier) et il faut qui tu y mets ta date_sortie et date_retour...

Function TestDate(date_principale As Date, date_sortie As Date, date_retour As Date)
TestDate = 0
If date_principale >= date_sortie And date_principale < date_retour Then TestDate = 1
End Function

Sub TesterLesDates()
Dim date_principale As Date
Dim date_sortie As Date
Dim date_retour As Date

date_sortie = "1/1/2015" 'à remplir
date_retour = "1/3/2015" 'à remplir
For i = 2 To 366
    date_principale = Cells(i, 1).Value
    Cells(i, 2).Value = TestDate(date_principale, date_sortie, date_retour)
Next i
End Sub

Je viens de relire le post, j'étais pas parti dans la bonne direction. Vu que Excel-Malin a répondu a ta demande, je te met ça en plus : Vérifier si le contenu du tableau est compris entre la valeur min et la valeur max des valeurs inscrites dans la colonne A (de A1 à A10). Ca peut toujours servir .

Sub Macro3()
Dim x As Long, y As Long
    Range("A1:D10").Select
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    x = Application.WorksheetFunction.Max(Range("A1:A10"))
    y = Application.WorksheetFunction.Min(Range("A1:A10"))
For i = 2 To 4
        For k = 1 To 10
            If Cells(k, i) >= y And Cells(k, i) <= x And Cells(k, i) <> "" Then
                      With Cells(k, i).Interior
                       .Pattern = xlSolid
                       .PatternColorIndex = xlAutomatic
                       .ThemeColor = xlThemeColorLight2
                       .TintAndShade = 0.599993896298105
                       .PatternTintAndShade = 0
                   End With
            End If
        Next k

Next i
End Sub
Rechercher des sujets similaires à "transformer fonction vba boucle"