Problème sur test d'égalité entre deux valeurs ...

Pio

XLDnaute Nouveau
Bonjour à toutes et à tous !

Voilà quelques temps que je travaille sur une macro (assez grosse, du moins pour moi !). Jusqu'à maintenant, tout allait plutôt bien, mais j'ai voulu ajouter une partie, et celle-ci ne fonctionne pas comme elle devrait.

Je vais essayer de rester clair.

Le but de ma macro est d'ouvrir un fichier texte (qui contient des valeurs avec des dates et heures, un point toutes les minutes), de le mettre en forme, pour pouvoir copier certaines plages horaires de ces valeurs dans mon tableau Excel et faire des calculs dessus.
J'ai donc un Userform dans lequel je renseigne les heures de début de ces plages (avec d'autres valeurs, mais sans intérêt pour mon problème).
Dans l'exemple fourni, le Userform est pré rempli par mes soins.
Pour utiliser la macro, il faut donc la lancer par le bouton dans l'onglet "Lancement", puis sur le Userform cliquer sur OK. Là, le code demande un fichier texte. Lui donner celui nommé "CF16.TXT" dans le ZIP.

Pour voir où est le soucis, il faut ajouter un point d'arrêt dans la Sub CommandButton1_Click() du Userform à l'endroit suivant :
If ActiveCell.Offset(20, 0).Value <> dbil2 + CDate("00:20:00") Then

Avec une recherche de la chaine de caractères, vous devriez trouver ...

Ici, la valeur dans activecell.value correspond à la date & heure de début de la plage à copier. Ce que je veux tester, c'est si 20 lignes en dessous (ces 20 lignes correspondants à ma plage à copier) correspond bien à 20 minutes plus tard. Ce test est là pour piéger une éventuelle erreur dans mon fichier texte de départ (s'il manque une ligne au milieu par exemple).

Pour faciliter la compréhension, dbil2 est une variable dans laquelle je stocke les date & heure du début de la plage à copier (bil pour bilan et 2 pour le 2e).
Donc je prend dbil2 auquel j'ajoute 00:20:00.
Dans mon exemple, dbil2 vaut 15/05/2007 09:40:00. Le résultat fait donc 15/05/2007 10:00:00. C'est exactement cette valeur que j'ai dans ActiveCell.Offset(20, 0).Value.
Malheureusement, la macro fait comme si les deux expressions étaient différentes !

Vous pouvez faire le test en remplaçant dans le userform 09:40 par 09:39, ça marche !

En fait, le problème apparait quand je passe à l'heure suivante. Et impossible de comprendre pourquoi ...

Voilà, je sais pas si j'ai été très clair sur ce coup là, mais c'est pas évident à expliquer. Je reste bien évidemment à dispo pour des compléments d'infos ...

Merci par avance pour votre aide !!
 

Pièces jointes

  • Qcal V2.1 forum.zip
    47.7 KB · Affichages: 57

pierrejean

XLDnaute Barbatruc
Re : Problème sur test d'égalité entre deux valeurs ...

bonjour Pio

je n'ais pas l'explication du phenomene

par contre la solution est peut-etre:

Code:
    If [COLOR=red]CStr([/COLOR]ActiveCell.Offset(20, 0).Value[COLOR=red])[/COLOR] <> [COLOR=red]CStr([/COLOR]dbil2 + CDate("00:20:00")[COLOR=red])[/COLOR] Then
 

Pio

XLDnaute Nouveau
Re : Problème sur test d'égalité entre deux valeurs ...

Bonjour Pierrejean,

Ben je viens d'essayer, et ça marche !!
Donc visiblement la comparaison de dates ne marche pas très bien. J'avais d'ailleurs déjà essayé sensiblement la même chose mais avec des CDate à la place des deux CStr et ça ne donnait rien de concluant ...

J'ai pas tout compris sur ce coup là ... mais ça marche !

Mille mercis Pierre Jean !!
 

Discussions similaires

Statistiques des forums

Discussions
312 299
Messages
2 086 992
Membres
103 422
dernier inscrit
victus5