Probleme d'Indice sur un split lorsque la valeur est 00:00:00

  • Initiateur de la discussion Initiateur de la discussion eros77
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

eros77

XLDnaute Nouveau
Bonjour à tous,

Je vient vers vous pour vous demander un peu d'aide.
Sur l'un de mes scripts VBA, je fait un split d'une colonne pour récuperer un horaire.
Cela marche correctement pour toutes les lignes sauf une dans laquelle l'heure est égale à 00:00:00 🙁
Le message d'erreur est le suivant:
L'indice n'appartient pas à la sélection

Et j'ai mis en gras dans cet extrait de script, la ligne sur laquelle s'arrete l'execution.


NBRLigneTOTAL = 1
While Not Cells(NBRLigneTOTAL, 4) = ""
' Effacement de la premiere ligne si c'est la ligne de titre
' Si la ligne est vide ou si pas d'horaire de fin

If Cells(NBRLigneTOTAL, 1) = "Application" Or Cells(NBRLigneTOTAL, 1) = "" Or Cells(NBRLigneTOTAL, 6) = "" Then
Rows(NBRLigneTOTAL & ":" & NBRLigneTOTAL).Select
Selection.Delete
Else
' Calcul du temps d'execution
DATE_HEURE_DEBUT = Split(Cells(NBRLigneTOTAL, 4), " ")
Cells(NBRLigneTOTAL, 5).Value = DATE_HEURE_DEBUT(1)

DATE_HEURE_FIN = Split(Cells(NBRLigneTOTAL, 6), " ")
Cells(NBRLigneTOTAL, 7).Value = DATE_HEURE_FIN(1)

Cells(NBRLigneTOTAL, 8).Value = Cells(NBRLigneTOTAL, 7) - Cells(NBRLigneTOTAL, 5)

' Si resultat négatif, on efface la ligne
If Cells(NBRLigneTOTAL, 8).Value < 0 Then
Rows(NBRLigneTOTAL & ":" & NBRLigneTOTAL).Select
Selection.Delete
Else
NBRLigneTOTAL = NBRLigneTOTAL + 1
End If

End If
Wend

Merci pour votre aide !

Christophe
 
Re : Probleme d'Indice sur un split lorsque la valeur est 00:00:00

Bonsoir Christophe

la fonction "split", renvoie un tableau de base zéro. tu "split" en utilisant comme séparateur l'espace. Il n'y en a pas dans 00:00:00. Ensuite tu veux renvoyer dans la cerllule le 2ème élément (1 dans le code ci dessous) :
Code:
Cells(NBRLigneTOTAL, 7).Value = DATE_HEURE_FIN([COLOR="Red"][B]1[/B][/COLOR])
Hors celui ci n'existe pas, il faut donc remplacer le 1 par 0 dans ce cas précis.

Sinon tu peux également utiliser le code ci dessous, te renverra le 1er élément du tableau, à voir si cela peut être utilisé dans ton projet.

Code:
Cells(2, 1).Value = DATE_HEURE_FIN(LBound(DATE_HEURE_FIN))

bonne soirée
@+
 
Re : Probleme d'Indice sur un split lorsque la valeur est 00:00:00

Bonjour Pierrot93 et merci pour ta réponse.
Désolé, j'ai oublié de préciser un point.
La cellule sur lequel se fait le split est de type "jj/mm/aaaa hh:mm:ss"

La valeur DATE_HEURE_FIN(1) existe bien.
Dans mon tableau de x lignes, tous les splits fonctionnent correctement sauf celui pour lequel la valeur de la cellule est : "02/07/2008 00:00:00"
 
Re : Probleme d'Indice sur un split lorsque la valeur est 00:00:00

Re,

OK, précision importante, essaye comme suit alors, fonctionne chez moi avec la date que tu as communiquée :

Code:
Dim DATE_HEURE_FIN As Variant
DATE_HEURE_FIN = Split(Cells(1, 1).Text, " ")
Cells(2, 1) = DATE_HEURE_FIN(1)

@+
 
Re : Probleme d'Indice sur un split lorsque la valeur est 00:00:00

Re,

Alors, ton exemple fonctionne bien chez moi, mais la modif ne tiens pas sur mon code 🙁
Je peux peut-être t'envoyer mon script + les données ?
 
Dernière édition:
Re : Probleme d'Indice sur un split lorsque la valeur est 00:00:00

Re,

quand tu dis la modif ne tiens pas... cela veut dire quoi ? tu as un message d'erreur ou bien tu n'as pas le résultat attendu ? Regarde peut être le format de la cellule de destination.

Sinon tu peux mettre un fichier en pièce jointe sur le forum, sans données confidentielles, mais avec le type de données utilisées et le code. Fichier léger, pas besoin de tout mais simplement arriver à voir se qui ne fonctionne pas.

@+
 
Re : Probleme d'Indice sur un split lorsque la valeur est 00:00:00

Re

en tout cas avec le fichier joint, le dernier code que je t'ai donné fonctione, me renvoie renvoie bien 00:00 dans la cellule adjacente....

Par contre tu n'as pas répondu à ma question :
quand tu dis la modif ne tiens pas... cela veut dire quoi ? tu as un message d'erreur ou bien tu n'as pas le résultat attendu ?

A noter, tu peux déposer des fichiers zip, c'est moins lourd.

@+
 
Re : Probleme d'Indice sur un split lorsque la valeur est 00:00:00

Bonjour Pierrot,

Bon... Etant sur un poste professionnel, je ne peux pas installer winzip...
Voici donc la premiere partie du code (le reste s'execute après le split, donc pas nécessaire) :

---------------------------------------------------
Update: (plus la peine car script en bas)
---------------------------------------------------

Sinon, je te confirme, avec ta modification, ça ne fonctionne pas ici 🙁
En fait, ça a fonctionné une fois, mais plus maintenant... étrange.
Là, je vient de le relancer, les données sont completement incohérentes (la derniere colonne étant la différence entre heure fin et heure début)...
ex:
STARJET ; DISPWEUM ; 01/07/2008 23:34 ; 23:34 ; 02/07/2008 00:00 ; 03:07 ; 00:01

Je supprime les 2 colonnes que je crée et je relance la macro.
Et là, ça tourne nickel...

Je recharge le fichier source, ça plante (indice...) de nouveau.
Après 3 relance, ça plante toujours...

Update:
Tiens, j'ai corrigé le probleme d'indice en agrandissant les colonnes donnants les dates pour les rendre visible (plus de ############).
C'est fou ça !
Par contre, à la premiere execution, j'ai toujours des données incohérentes.
Je doit effacer les colonnes crées et rejouer le script pour que cela soit correct.
 
Dernière édition:
Re : Probleme d'Indice sur un split lorsque la valeur est 00:00:00

Re

là en l'état peut pas t'en dire plus.... pour zippé un fichier pas besoin de winzip, dans windows XP dans le poste de travail, tu sélectionnes ton fichier => click droit => Envoyé vers => dossier compressé

@+
 
Re : Probleme d'Indice sur un split lorsque la valeur est 00:00:00

Re,

ton fichier en retour, sur la base des données précédemment transmises, chez moi fonctionne parfaitement.... Mais normal qu'il y avait un bogue lors de la relance, car le fichier source utilisé étant modifié... J'ai mi un controle afin d'éviter cela... Pas trop compris l'utilisation de "Function" au lieu de "Sub", j'ai donc modifié, plus approprié dans ce cas, enfin c'est mon avis.

bon après midi
@+
 

Pièces jointes

Re : Probleme d'Indice sur un split lorsque la valeur est 00:00:00

Re,

J'ai trouvé la source de l'erreur...
Pour récapituler:
1- Le probleme d'indice provenait des colonnes de date+heure qui n'était pas suffisament large (donc ######### au lieu de jj/mm/aaaa hh:mm:ss)
2- Le probleme de données incohérentes lors du 1er lancement vient du fait qu'à la suite du split des colonnes, j'avais un tri par colonne... et celui-ci étant codé depuis quelques temps, je n'avais pas pensé à allonger à la sélection pour prendre en compte les 2 colonnes ajoutés.
Le script passant une premiere fois, et les données étant triés, cela explique que les relances donnaient des données correctes...

Et bien, que d'aventures !
Merci Pierrot pour ton aide !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
644
Réponses
3
Affichages
605
Réponses
0
Affichages
621
Retour