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 :

Trouver le maximum et son indice, sans utiliser de boucle


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 68
    Par défaut Trouver le maximum et son indice, sans utiliser de boucle
    Bonjour,

    J'ai une répartition horaire de la charge. Je voudrai trouver le maximum et l'heure correspondante, SANS UTILISER UNE BOUCLE FOR. Exemple:

    Heure P Load AC
    00:00 86
    01:00 86
    02:00 86
    03:00 80
    04:00 82
    05:00 80
    06:00 0
    07:00 0
    08:00 0
    09:00 2800
    10:00 2800
    11:00 3500
    12:00 700
    13:00 2800
    14:00 2800
    15:00 2800
    16:00 702
    17:00 0
    18:00 290
    19:00 290
    20:00 290
    21:00 290
    22:00 290
    23:00 290

    En effet, j'évite de boucle car ça prend du temps pour l'exécution du code, et surtout parce que j'en ai déjà de trop dans le code. Merci

    Cordialement

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
     With CreateObject("AdoDb.connection")
            .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES"""
                Debug.Print .Execute("SELECT Count([Heures]),[Heures] from [Feuil1$] Group By [Heures]").getstring
            .Close
        End With
    End Sub
    Nom : Sans titre.png
Affichages : 353
Taille : 10,6 Ko

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    admettant que les données sont à partir de A1 et qu'on travaille sur la feuille active

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub toto()
    Dim PosValeurMax As Range
     
    With ActiveSheet.Cells(1, 1).CurrentRegion
        Set PosValeurMax = .Find(Application.Max(.Columns(2)), , , xlWhole)
    End With
     
    If Not PosValeurMax Is Nothing Then MsgBox "Valeur Max : " & PosValeurMax.Value & " | Heure P : " & PosValeurMax.Offset(0, -1).Text
     
    End Sub
    Nom : dvp_16.png
Affichages : 595
Taille : 21,9 Ko

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 68
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    Bonjour,

    admettant que les données sont à partir de A1 et qu'on travaille sur la feuille active

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub toto()
    Dim PosValeurMax As Range
     
    With ActiveSheet.Cells(1, 1).CurrentRegion
        Set PosValeurMax = .Find(Application.Max(.Columns(2)), , , xlWhole)
    End With
     
    If Not PosValeurMax Is Nothing Then MsgBox "Valeur Max : " & PosValeurMax.Value & " | Heure P : " & PosValeurMax.Offset(0, -1).Text
     
    End Sub
    Nom : dvp_16.png
Affichages : 595
Taille : 21,9 Ko
    Ooooh làlà vous êtes un génie. Merci bcp. Je ne pensais pas qu'il y a une solution à ce problème. Thx

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Vbajon Voir le message
    J'ai une répartition horaire de la charge. Je voudrai trouver le maximum et l'heure correspondante, SANS UTILISER UNE BOUCLE FOR.
    On peut même le faire sans VBA.
    En supposant que tes données sont en A2:B100
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    =INDEX(A2:A100;EQUIV(MAX(B2:B100);B2:B100))
    =INDEX(B2:B100;EQUIV(MAX(B2:B100);B2:B100))
    Ces formule étant éventuellement facilement transposable à du VBA avec Evaluate ou WorksheetFunction.
    https://msdn.microsoft.com/fr-fr/lib.../ff841212.aspx
    https://msdn.microsoft.com/fr-fr/lib.../ff193019.aspx

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Initialisation d'un tableau sans utilisation de boucle
    Par dude91820 dans le forum Macros et VBA Excel
    Réponses: 34
    Dernier message: 23/04/2016, 13h54
  2. Réponses: 5
    Dernier message: 31/05/2012, 17h00
  3. Appeler une méthode par son nom sans utiliser eval
    Par rambc dans le forum Général Python
    Réponses: 5
    Dernier message: 30/10/2009, 17h05
  4. Comment ouvrir son Programme sans utiliser Dev-C++?
    Par Neferious dans le forum Dev-C++
    Réponses: 8
    Dernier message: 21/07/2008, 15h22
  5. Trouver un maximum entre 2 chiffres sans tests
    Par orichimaru dans le forum Algorithmes et structures de données
    Réponses: 32
    Dernier message: 25/03/2005, 12h05

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