IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Code VBA tri de cellules suivant l'heure et la date


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 24
    Par défaut Code VBA tri de cellules suivant l'heure et la date
    Bonjour à tous,

    Je viens à votre rencontre pour avoir plus d'informations concernant les tri de cellules suivant la date et l'heure.

    Je suis actuellement sur un tableau permettant de trier les évènements d'une machine suivant l'heure d'activation ainsi que la date.

    Je dispose d'un tableau composé de 4 colonnes : Date (colonne G), heure actif (colonne H), message (colonne I), heure retombée (colonne J).

    La date est en format jj/mm/aaaa et l'heure hh:mm:ss.

    J'aimerais que les lignes ayant la même date (ex : 02/04/15) ainsi que la même heure (juste le chiffre des heures car les minutes et secondes ne pourront jamais être pareilles) soient sélectionnés.

    J'aimerais ensuite faire un calcul de temps de cycle. C'est-à-dire dans cette sélection, de sélectionner le temps le plus récent et le temps le moins récent. Il faudrait ensuite soustraire ces deux résultats et d'inscrire ce résultat dans une autre cellule.

    Le problème est que j'ai plusieurs cycle par jours et je ne sais pas comment faire une sélection uniquement sur le chiffre des heures.
    De plus, il arrive que des cycles se lancent à partir de 23h55 et donc finissent le lendemain vers 00h ..

    J'espère avoir été claire et que vous pourrez m'orienter dans ce petit projet ^^'

    Merci d'avance

  2. #2
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut


    Bonjour,

    Qu'entends tu par "lignes sélectionnées" ? Tu voudrais les surligner ?

    C'est une macro que tu veux lancer plusieurs fois, ou une seul fois pour bilan ?

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 24
    Par défaut
    Bonjour Nino,

    En faite par lignes sélectionnées, je parle ici d'une plage de cellules si cela est plus parlant.

    D'après moi, il faudrait dans un premier temps, scruter et regarder dans la colonne H toutes les celulles ayant le même chiffre représentant les heures (ex : toutes les cellules qui comportent 09:xx:xx).

    Une fois que la macro a trouvée les cellules ayant le chiffre d'heure identique, je pense que l'on doit refaire une sélection de ces cellules pour pouvoir faire à nouveau une recherche pour trouver l'heure la plus récente et l'heure la moins récente.

    Cela me permettrait ensuite de faire mon calcul heure récente - heure moins récente pour savoir la durée de mon cycle.

    Cette macro sera utilisée plusieurs fois par semaine.

    J'espère avoir été un peu plus claire

  4. #4
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut


    Citation Envoyé par Chachoumie Voir le message
    Bonjour Nino,
    (Je suis majeur et vacciné !)

    Citation Envoyé par Chachoumie Voir le message
    En faite par lignes sélectionnées, je parle ici d'une plage de cellules si cela est plus parlant.
    Pas beaucoup plus, désolé ^^ En réalité, j'ai du mal à comprendre ce que tu veux dire concrètement par sélectionnées. Est ce que tu veux le même effet que lorsque tu clic sur une cellule / plage de cellule ? "Select" est une méthode VBA qui permet de mettre le focus sur une cellule / plage de donnée, est ce que tu veux vraiment faire ça ?

    Citation Envoyé par Chachoumie Voir le message
    D'après moi, il faudrait dans un premier temps, scruter et regarder dans la colonne H toutes les celulles ayant le même chiffre représentant les heures (ex : toutes les cellules qui comportent 09:--:--).

    Une fois que la macro a trouvée les cellules ayant le chiffre d'heure identique, je pense que l'on doit refaire une sélection de ces cellules pour pouvoir faire à nouveau une recherche pour trouver l'heure la plus récente et l'heure la moins récente.

    Cela me permettrait ensuite de faire mon calcul heure récente - heure moins récente pour savoir la durée de mon cycle.
    Je vois bien ce que tu veux faire, juste des soustractions horaires ? (Pareil pour la sélection, que veux tu faire avec ?)

    Donc, pour un cycle le même jour, commençant à la même heure, tu voudrais calculer le nombre de minute du cyle ?

    Citation Envoyé par Chachoumie Voir le message
    Cette macro sera utilisée plusieurs fois par semaine.

    J'espère avoir été un peu plus claire
    Un peu plus, j'ai encore du mal avec les "sélections" que tu veux faire !

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 24
    Par défaut
    J
    e suis majeur et vacciné !
    Désolé je reprenais juste ton pseudo

    Pour moi sélectionner représente la même chose que lorsque l'opérateur va venir cliquer sur une cellule et faire un glissement pour en sélectionner plusieurs ^^

    La seule chose c'est que je ne sais pas si on est obliger de faire une sélection, je pense que l'on peut réaliser cette macro sans mais je ne vois pas encore comment

    Concernant le calcul, il s'agit en effet, d'une soustraction horaire pour comparer le temps des différents cycles et pouvoir faire un calcul du temps moyen du cycle par jour

    Donc si j'ai, par exemple, une journée ou 3 cycles ont été effectués, je veux pouvoir calculer le temps de chacun de ces cycles pour pouvoir ensuite les comparer aux autres jours

  6. #6
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut


    Okay, je comprends tout !

    Pour les sélections, pas besoins d'en faire, il suffit de "préciser" l'objet avec lequel tu vas faire le calcul. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    range("A1").value = range("B1").value - range("C1").value
    'En VBA
    Mais quid des jours dont les cycles commencent à 23h55 et finissent à 00h05 ? (par exemple). Sur quel jours sont ils comptés ?

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 24
    Par défaut
    Ce code fonctionne mais pour des cellules précisent, hors le nombre de cellules dépend suivant le cycle

    Par exemple le 08/04/15 à 9h, je compte 35 cellules et le 08/04/15 à 12h j'en compte 55. C'est pour cela que j'aimerais que la macro fasse une recherche de cellule ayant la même heure pour pouvoir faire correctement sont calcul.

    De plus, si un cycle commence à 23h55 et fini à 00h10, dans mon tableau cela me mettra le premier évènement à 23h55 le 07/04/15 et le dernier évènement à 00h10 le 08/04/15.

    Avec tout cela je suis un peu perdue ;(

  8. #8
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut


    Bonjour !

    Je pense que je me perds un peu dans tes explications, peux tu poster une image d'un classeur excel de ce que tu veux faire ?

    En ce qui concerne le "select", je ne pense pas que ça réponde à ton besoin, mais on en saura plus quand tu auras poster une image explicative

  9. #9
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 24
    Par défaut
    Bonjour,

    Comme convenu, voici des images de mon classeur excel.

    Il apparaît comme ceci à l'ouverture :

    Nom : classeur.PNG
Affichages : 1237
Taille : 56,1 Ko

    A l'aide de ma macro, l'utilisateur obtient ceci (la macro met en forme le tableau, colorie la case en jaune lorsque le mot validation simple apparaît et tri les messages suivant la date et l'heure) :

    Nom : Capture macro.PNG
Affichages : 1351
Taille : 61,8 Ko

    Et j'aimerais obtenir ceci :

    Nom : classeur voulu.PNG
Affichages : 1360
Taille : 63,9 Ko

    Il s'agirait donc de séparer par une nouvelle ligne les différentes dates et de mettre dans une case le temps de cycle (appelé ici temps de fonctionnement). Ainsi, le calcul pour le temps de fonctionnement ici est : le plus grand temps à partir de 23h moins le plus petit temps à partir de 23h.

    Voilà j'espère que tu y vois plus clair
    Images attachées Images attachées   

  10. #10
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut


    Bonjour,

    Oui, c'est déjà plus clair ! Quelques questions en vrac :

    Les dates dans la colonne "Date", sont au format texte, ou au format date (dd/mm/yyyy) ?
    Le calcul que tu effectue, c'est "Heure retombée" - "Heure active" ?
    La date correspond à l'heure active ?

  11. #11
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 24
    Par défaut
    Les dates sont au format date dd/mm/yyyy.

    Non le calcul effectué est fait uniquement dans la colonne heure active, par exemple sur les images ci dessus (la dernière avec la case temps de fonctionnement) le calcul était = D28 - D4. Si par exemple j'avais avant ses cellules d'autres messages avec l'heure active = 10:xx:xx le calcul serait : l'heure la plus "grande" (ayant 10 en premier chiffre) - l'heure la plus "petite" (aynt également 10 en premier chiffre).

    La date correspond à la date du jour où le message est apparu. Exemple : Aujourd'hui j'appui sur un bouton à 10h50, dans mon tableau je vais trouvé : 15/04/15 10h50 Appui sur le bouton xxx

Discussions similaires

  1. [XL-2003] Associer Cellule à un code VBA + tri automatique
    Par Razekiel_ dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 10/07/2012, 13h59
  2. Code VBA uniquement si cellule modifiée
    Par tictactoc dans le forum Excel
    Réponses: 1
    Dernier message: 12/06/2009, 17h29
  3. code VBA copie colle cellule d'1 fichier excel à 1autre
    Par tony020422 dans le forum Macros et VBA Excel
    Réponses: 30
    Dernier message: 03/06/2009, 18h47
  4. VBA - Tri de cellules alpha et exceptions
    Par House MD dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/12/2007, 19h58
  5. Réponses: 2
    Dernier message: 27/10/2005, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo