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 :

Considérer que le premier min de la ligne [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    361
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 361
    Par défaut Considérer que le premier min de la ligne
    Bonjour,

    Le petit code ci-dessous me donne la valeur minimale de chaque ligne en me précisant à chaque fois sur quelle colonne elle se trouve.
    j'aimerais désormais ne considérer que la première valeur minimale sur la ligne i, par exemple si dans mon tableau nous avons 2 fois la valeur 1 sur la ligne i , je voudrais qu'il me dise que la valeur min se trouve sur la colonne 1, et ne tiens plus compte de la colonne 2.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     Sub test()
     
    Dim tableau(2, 2) As Variant, i%, j%, m As Double
     
     
    tableau(0, 1) = 1
    tableau(0, 2) = 1
    tableau(1, 1) = 3
    tableau(1, 2) = 2
    tableau(2, 1) = 7
    tableau(2, 2) = 4
     
     
    For i = 0 To UBound(tableau, 1)
    m = 100
     
        For j = 1 To UBound(tableau, 2)
     
              If tableau(i, j) < m Then
     
              m = tableau(i, j)
              End If
     
        Next j
     
     
    ' on a récupérer le min tableau
     
           For k = 1 To UBound(tableau, 2)
     
             If m = tableau(i, k) Then
     
                'afficher le n° de sa colonne et si il y a d'autre valeur min sur la même ligne alors il passe à la ligne d'aprés (next i)
     
                MsgBox "Minimum(colonne " & k & ") = " & m
     
             End If
     
           Next k
     
    Next i
     
    End Sub
    merci!

  2. #2
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    361
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 361
    Par défaut
    je viens de trouver merci ,

    en fait il suffisait de placer l'instruction exit for pour sortir de la boucle sur les colonnes (indice k).

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    bien plus simple & efficace en n'oubliant pas les fondamentaux d'Excel comme ses fonctions de feuille de calcul ‼

    Avec les fonctions INDEX, MIN & EQUIV (Match en VBA car anglais natif oblige …) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Demo()
        TB = [{1,1;3,2;7,4}]    ' l'indice commence à 1 donc TB(1 to 3, 1 to 2)
     
        For L& = 1 To UBound(TB)
            TL = Application.Index(TB, L)
            M% = Application.Min(TL)
            S$ = S$ & "Ligne " & L & " :   minimum = " & M & _
                 "    colonne " & Application.Match(M, TL, 0) & vbLf & vbLf
        Next
     
        Erase TB, TL
        MsgBox S
    End Sub
    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  4. #4
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut considerer que le premier min
    Bonjour,

    j'ai déjà apporté la réponse dans une précédente demande restée sans réponse.
    lorsque tu changes les données du problème merci le faire sur la même discussion.

    Cela fait déjà AU MOINS deux discussions que tu introduis et qui restent sans réponses pour les deux raisons suivantes
    - la question est posée précipitamment avant d'avoir réfléchi au problème (résolu immédiatement après la question) et tu ne vas plus voir s'il y a une réponse.
    - tu as oublié la question à force d'en poser

    Ce n'est pas très respectueux !

    cordialement,

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    361
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 361
    Par défaut
    Bonjour Paul,

    Tout d'abord je m'en excuse , en effet je suis tellement obstiné à finir une réalisation en VBA que dès qu'un code proposé fonctionne je marque la discussion en résolu

    D'autre part, il m'arrive de ne pas tout comprendre dans certains code mais pour ne pas vous blazer je préfère revoir la qualité de mon code dans un second temps, c'est a dire y revenir plus tard.

    dsl encore

  6. #6
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut considérer que le premier min
    re....,

    Ce n'est pas grave.
    As-tu essayé le code proposé par Marc ?

    Cordialement,

  7. #7
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    361
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 361
    Par défaut
    oui je l'ai conservé son code ,
    il est parfait , il me dit exactement les coordonnées (le numéro de la colonne) du minimum sur chaque ligne

    Thanks

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

Discussions similaires

  1. LineNumberReader ne lit que la premiere ligne de mon fichier
    Par Alcooline dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 11/08/2011, 10h30
  2. Réponses: 1
    Dernier message: 14/01/2011, 18h52
  3. Réponses: 3
    Dernier message: 10/10/2006, 08h26
  4. [CSV] Ne lire que la premiere ligne d'un fichier CSV
    Par passie dans le forum Langage
    Réponses: 7
    Dernier message: 05/07/2006, 12h02
  5. Réponses: 6
    Dernier message: 17/10/2005, 14h38

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