Formule avec condition d'heure

Bonjour tout le monde

j'ai écrit une formule qui d'habitude fonctionne bien mais la j'ai mis des condition de résultat sur des durées et ça ne fonctionne pas (mais sans mettre d'erreur)

=SI(ET(H2=H3;D2=D3;A3-B2>"00:00:00";A3-B2<"00:01:01");A3-B2;"")

ou

=SI(ET(H2=H3;D2=D3;"00:00:00"<A3-B2<"00:01:00");D3-B2;"")

https://www.excel-pratique.com/~files/doc/formule_heure.xls

pourriez vous me dire ou est mon erreur?

ou mieux si vous aviez un code qui ferais la même chose sur toute la colonne "I"

Cordialement

Bonjour,

Essaye en multipliant par 1 tes chaines "heures" :

=SI(ET(H2=H3;D2=D3;A3-B2>"00:00:00"*1;A3-B2<"00:01:01"*1);A3-B2;"")

Bon WE

@+

Bonjour thibo

parfait, ça marche, mais pour info, pourrais tu me dire pourquoi il faut les multiplier par "1" ?

laurent

re,

Tant que ta chaine est entre guillemets, Excel la considère comme du texte.

Dès lors que la chaine alphanumérique ressemble à une donnée numérique, le fait de la multiplier par 1 la transforme en vraie donnée numérique et autorise alors les tests.

Voilou

@+

Edit : pour info, on pourrait également faire :

+0

/1

-0

@+

re:

fallait y penser,

merci pour les infos

Laurent

Re:

je réouvre ce sujet car j'ai a peu pres le meme probleme mais sur une macro

elle ne prends pas en compte la condition en gras il doit y avoir un probleme de syntaxe mais je ne trouve pas, j'ai essayer "*1" comme dans la formule mais rien a faire

quelqu'un pourrait-il me dire ou est l'erreur?

merci

Sub FusionLignes2()

Dim i As Integer, j As Integer, Lig As Integer, Tablo

With Sheets("def.N.install")

Lig = .Range("A65536").End(xlUp).Row

Tablo = .Range("A2:I" & Lig)

For i = 1 To Lig - 2

If Tablo(i, 1) <> "" Then

For j = i + 1 To Lig - 1

If Tablo(j, 1) <> "" Then

If Tablo(j, 8) = Tablo(i, 8) And Tablo(j, 4) = Tablo(i, 4) And Tablo(j, 1) - Tablo(i, 2) < "00:01:01" Then

'Tablo(i, 3) = Tablo(i, 3) + Tablo(j, 3)

Tablo(i, 2) = Tablo(j, 2)

Tablo(i, 3) = Tablo(j, 2) - Tablo(i, 1)

Tablo(j, 1) = "": Tablo(j, 2) = "": Tablo(j, 3) = "": Tablo(j, 4) = "": Tablo(j, 5) = "": Tablo(j, 6) = "" _

: Tablo(j, 7) = "": Tablo(j, 8) = "": Tablo(j, 9) = ""

End If

End If

Next j

End If

Next i

.Range("A2:I" & Lig) = Tablo

.Range("A2:I" & Lig).Sort Key1:=Range("A2"), Order1:=xlAscending

End With

End Sub[/b][/code]

re

ce n'est pas tres clair, je vous joint un fichier exemple.

s'il est plus facile pour vous de réécrire un code, n'hesiter pas car de plus, je ne suis pas sur qu'il y ai que ca qui n'aille pas. (c'est une macro que j'essai d'adapter)

https://www.excel-pratique.com/~files/doc/fuision2.xls

cordialement

Bonjour le Forum,

Je remarque que dans la ligne écrite il n'y a qu'un ET, dans mes écriture je mets autant de ET que de condition moins une .Exemple

Écriture de maguetlolo

=SI(ET(H2=H3;D2=D3;A3-B2>"00:00:00"*1;A3-B2<"00:01:01"*1);A3-B2;"")

Écriture de Annette

=SI(ET(ET(ET(H5=H6;D5=D6;A6-B5>"00:00:00"*1;A6-B5<"00:01:01"*1)));A6-B5;"")

Quelqu'un peut m'expliquer la raison du fonctionnement de l'écriture de maguetlolo.

Bonsoir à tous et merci d'avance.

Annette

Bonsoir

Quelqu'un peut m'expliquer la raison du fonctionnement de l'écriture de maguetlolo

.

L'écriture est correcte

ET(Condition1;Condition2;Condition3;....)

inclue toutes les conditions, inutile de rajouter des ET

Cordialement

Bonsoir

an.pi

une petite explication:

Cordialement

Merc à vous,Que de ET et de OU gaspillés dans mes anciennes applications.Annette

Salut le forum

Maguetlolo, ta macro modifiée,

Plage à adapter ici A à H et valeur de k=8 (Nbre de colonnes)

Sub Fusionner_Lignes()

Dim i As Integer
Dim j As Integer
Dim k As Byte
Dim Lig As Integer
Dim Tablo

With ActiveSheet
Lig = .Range("A65536").End(xlUp).Row
Tablo = .Range("A2:H" & Lig)
For i = 1 To UBound(Tablo) - 1
  For j = i + 1 To UBound(Tablo)
    If Tablo(i, 1) <> "" And Tablo(j, 1) <> "" Then
      If Tablo(i, 8) = Tablo(j, 8) And _
        Tablo(i, 4) = Tablo(j, 4) And _
          (Tablo(j, 1) - Tablo(i, 2)) < CDate("00:01:01") Then

            Tablo(i, 2) = Tablo(j, 2)
            Tablo(i, 3) = Tablo(i, 3) + Tablo(j, 3)
            For k = 1 To 8
              Tablo(j, k) = ""
            Next k

      End If
    End If
  Next j
Next i

.Range("A2:H" & Lig) = Tablo
.Range("A2:H" & Lig).Sort Key1:=Range("A2"), Order1:=xlAscending

End With

End Sub

Mytæ

bonjour,

Exactement ca, merci Myta

Laurent

Rechercher des sujets similaires à "formule condition heure"