Faire une RAZ si

Bonjour a tous;

mon problème est tout simple j'ai un tableaux excel avec sur la ligne I6:ME6 les date allant du 01/02/20 au 31/12/20 et sur la colonne C7 les dates déchéance j'ai crée une macro qui lorsque l'une des date de la colonne C est égale a l'une des dates de la ligne H6:MD6 me fait une RAZ. Par exemple si C10 = 04/05/20 alors le calcule s’arrête a cette même date sur la ligne I6:ED6. Mon problème c'est inverser le code pour la colonne date de départ qui se trouve a D7 donc faire une RAZ tant que la date de depart n'est pas retrouvée sur la ligne I6:ME6. Je vous partage mon fichier pour plus de compréhension. merci d'avance pour votre aide.

mon-partagefr/f/Jp1c2nSH/

Bonjour,

erreur de partage ...

@ bientôt

LouReeD

Bonjour toutes et tous

coucou LouReed

https://mon-partage.fr/f/Jp1c2nSH/

crdlt,

André

Bien vu !

A croire que je suis fatigué !

@ bientôt

LouReeD

Re,

et en faisant la même procédure en faisant appel avec Call

exemple faussé ci-dessous pas très pratique, il doit y avoir 100000 fois mieux:

Private Sub Cmb_Echeance_Click()
    DernCol = Cells(6, Columns.Count).End(xlToLeft).Column
    DerLig = Range("C" & Rows.Count).End(xlUp).Row
    Set Plage_Date = Range(Cells(6, 8), Cells(6, DernCol))

    For n = 7 To DerLig
        'recherche en ligne
        Set Date_Ok = Plage_Date.Find(Cells(n, 3), , xlValues, xlWhole, , , False)
        If Not Date_Ok Is Nothing Then
            Col1RAZ = Date_Ok.Column + 1
            Range(Cells(n, Col1RAZ), Cells(n, DernCol)) = 0
        End If
    Next n
    Set Plage_Date = Nothing

    Call Cmb_Echeance1  ' on appel  Call ==> private sub Cmb_Echeance1() <==
End Sub

' a rectifier ci-dessous
Private Sub Cmb_Echeance1()

    DernCol = Cells(6, Columns.Count).End(xlToLeft).Column
    DerLig = Range("C" & Rows.Count).End(xlUp).Row
    Set Plage_Date = Range(Cells(6, 8), Cells(6, DernCol))

    For o = 7 To DerLig
        'recherche en ligne
        Set Date_Ok = Plage_Date.Find(Cells(o, 3), , xlValues, xlWhole, , , False)
        If Not Date_Ok Is Nothing Then
            Col1RAZ = Date_Ok.Column + 1
            Range(Cells(o, Col1RAZ), Cells(o, DernCol)) = 0
        End If
    Next o
    Set Plage_Date = Nothing

End Sub

Bonjour,

Andre13 bonjour,

Juste une précision pour moi :

ce que vous cherchez à faire c'est qu'avant la date de début il n'y ait pas d'information dans les cellules et après la date d'échéance, qu'il n'y en ait pas non plus, et que de la date de début à la date d'échéance, que les valeurs soient affichées. Est-ce bien cela ?

@ bientôt

LouReeD

Bonjour loureed oui c'est exactement ca

Alors en cellule I7, entrez cette formule :

=SI(OU(I$6<$D7;I$6>$C7);"";$F7*$G7)

si ( la date en ligne 6 est strictement inférieur à la date de départ, ou elle strictement supérieure

alors on affiche rien

sinon on affiche le calcul F7 * G7

Avec mise en place et retrait des "$" nécessaire ou inutile afin que cette formule soit copiable sur l'ensemble du tableau.

@ bientôt

LouReeD

Oui mais ce que je voudrais c'est l'integrer dans mon code ce que je ne parvient pas a faire.

André je ne comprend pas trop ta réponse.

Et pourquoi faire un code si la formule "simple" fonctionne ?

Vu que les cellules sont le résultats de formules d'autres cellules, est-il besoin de mettre ces formules en place par VBA

Ce que vous pouvez faire pour voir comment écrire cette formule par VBA :

Mettre la formule en I7

Lancer l'enregistreur de macro, revalider la formule en "entrant dans la cellule", puis [Entrée], et arrêtez l'enregistreur.

Allez sur VBA pour voir la retranscription...

@ bientôt

LouReeD

Rechercher des sujets similaires à "raz"