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 :

tester et récupérer numero de colonne [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 71
    Par défaut tester et récupérer numero de colonne
    Bonjour,
    j'ai la question suivante :
    j'ai dans un nombre C de colonnes et un nombre l de lignes des horaires.
    Je voudrais récupérer pour chaque ligne le numero de colonne dans lequel je trouve l'horaire le plus tardif de chaque ligne.
    J'étais parti sur une méthode avec find mais ça ne marche pas puisque ça me renvoie le max mais pas le n° de colonne.
    Merci d'avance pour votre aide.

  2. #2
    Membre chevronné Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Par défaut
    Bonjour,

    Voici ce que je te proposerais
    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
    Sub TestMaxParligne()
        Dim C As Integer
        Dim L As Integer
        Dim Max As Integer
        Dim LMax As Integer
        Dim sh As Worksheet
     
        Set sh = ActiveSheet
     
        For L = 1 To 10
     
            Max = sh.Cells(L, 1).Value
            LMax = 1
     
            For C = 2 To 10
     
                If Max < sh.Cells(L, C) Then
                    Max = sh.Cells(L, C)
                    LMax = C - 1
                End If
     
            Next C
     
            sh.Cells(L, 11) = "Maximum " & Max & " à la colonne " & LMax & "."
     
        Next L
     
    End Sub
    Regarde tout ça, si tu as besoin d'explication n'hésite pas!

    P.S. N'oublies pas de changer le départ et la fin de tes boulces et de vérifier ce que tu fais avec le numéro de colonne.

  3. #3
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 71
    Par défaut
    Bonjour Drakkar_agfa,
    merci pour ta réponse, néanmoins elle ne résoud pas mon problème :
    il faut considérer que je dois comparer des dates (ou plutôt des heures de passage), et l'utilisation du suffixe ne marche donc pas.

  4. #4
    Membre chevronné Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Par défaut
    D'accord,

    peux-tu nous donner un exemple de date et/ou heure à comparer? Est-ce du texte? un format de date? du numérique?

    Cela changera notre méthode de comparaison (le if Max < ... )

  5. #5
    Membre confirmé Avatar de Djromé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 172
    Par défaut Réponse à KokoVba
    Bonjour,

    Essaie, il me semble que c'est prévu pour les date.

    Salutations

  6. #6
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 71
    Par défaut
    Pour éclairer mon problème je vous mets un fichier en PJ. Dans mon exemple, comment :
    - faire pour qu'entre la ligne 9 et la ligne 61, il me renvoie l'adresse du min et du max des colonnes 4 à 19?

    Mon objectif à terme est de remplir la colonne 24 de la façon suivante :
    - je prends la 1ère ligne, je regarde le max et la parite (colonne 1)
    - je descend d'un cran et si :
    - la différence de temps entre mon max et la valeur > 20 mn
    et - la parite est différente (ou bien la valeur est le min de sa ligne)
    alors la valeur en colonne 24 est la valeur précédement remplie +1
    on voit que cette logique est remplie en ligne 11 puis en ligne 25.

    Voilà l'idée, n'hésitez pas à me poser plus de questions si besoin est. Je pense qu'il faudra que j'utilise plusieurs boucles mais pour l'instant il faut déjà que je récupère les colonnes où sont les max qui m'intéressent.
    Fichiers attachés Fichiers attachés

  7. #7
    Membre chevronné Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Par défaut
    J'ai adapté mon code pour qu'il fonctionne avec ta feuille.
    Voici le code que tu peux copier et utiliser sur ta feuille.
    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
    Sub TestMaxParligne()
        Dim C As Integer
        Dim L As Integer
        Dim Max As Variant
        Dim LMax As Integer
        Dim sh As Worksheet
     
        Set sh = ActiveSheet
     
        For L = 9 To 61
     
            Max = sh.Cells(L, 4).Value2
            LMax = 4
     
            For C = 4 To 19
     
                If Max < sh.Cells(L, C).Value2 Then
                    Max = sh.Cells(L, C)
                    LMax = C - 1
                End If
     
            Next C
     
            sh.Cells(L, 20) = "Maximum " & Max & " à la colonne " & LMax & "."
     
        Next L
     
    End Sub
    Tu pourras ainsi avoir la colonne avec le max. Je te laisse commencer la deuxième partie de ton code. Je n'ai pas le temps pour l'instant de tout faire ça mais si tu as des questions, n'hésite pas, tu nous posteras ce que tu auras fait.

  8. #8
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 71
    Par défaut
    Merci Drakkar_agfa,
    ton programme marche mais il y a quelques problèmes :
    - sur le format, il transforme mon horaire en nombre décimal
    - sur le résultat de la colonne, ça marche bien en ligne 10 mais pas en ligne 9 par exemple où il y a un décalage. Je vais essayer de voir pourquoi.
    A+

    Edit : sur le 2 ème point il suffit de remplacer :
    par
    Il reste le premier point.

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

Discussions similaires

  1. [WD5.5] Récupérer nom de colonne et nom de ligne
    Par grellierj dans le forum WinDev
    Réponses: 10
    Dernier message: 10/08/2010, 15h25
  2. [JXTable]Récupérer valeur de colonne invisible ?
    Par Baptiste Wicht dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 02/07/2007, 21h22
  3. Tester et récupérer des infos sur fichier distant
    Par cybertj dans le forum Langage
    Réponses: 2
    Dernier message: 17/05/2006, 09h18
  4. order by numero de colonne
    Par pittacos dans le forum Langage SQL
    Réponses: 10
    Dernier message: 29/07/2005, 15h36
  5. [C#] [DataGrid] Recupération du numéro de colonne
    Par Scorff dans le forum ASP.NET
    Réponses: 3
    Dernier message: 07/04/2005, 10h52

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