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 :

boucle


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 268
    Par défaut boucle
    Bonjour,

    J'ai besoin d'aide pour une satané boucle qui me gache la vie depuis 3 h :'(
    C'est tt bete je le sais mais je bloque

    J’ai un tableau avec
    Dans une premiere colonne des dates qui peuvent etre ou pas répétes plusieurs fois
    Dans une colonnes a coté j’ai une autre colonnes avec des ok ou des non ok
    et D’autres colonnes a coté

    Concretement

    Colonne A ........Colonne B
    Janvier 2005 Ok
    JANVIER 2005 Ok
    JANVIER 2005 Nok
    Fevrier 2005 Ok
    Mars 2005 nok
    Mars 2005 nok
    Avrll 2005 Ok
    Avril 2005 nok
    Avrll 2005 nok
    Avril 2005 Ok
    Avrll 2005 nok
    Avril 2005 nok

    Ce que je souhaite faire c'est

    qu’il me compte pr chaque date le nb de Ok et Nok et qu’il me mette dans une cellule celui qui a le plus gd nombre
    Par exemple pr janvier2005 Il me mettra Ok ( psk 2 Ok et Nok) et pr Avril il me metta dans une autre cellule Nok ( psk 4 Nok et 2 Ok)

    C’est une boucle tte simple mais je bloque dessus depuis 3heures

    En faite le truc c’est
    'Pour une date donné dans la plage de cellule non fixe cherche la ieme date
    'pour cette date cherche nombre de Ok
    'si nbre de nok > nombre ok alors cellule de destination = nok sinon ok

    Quelqu’un veut bien m’aider ?
    Merci.

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Tu sais qu'un tableau croisée dynamique fera ce que tu veux faire?

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 268
    Par défaut
    oui je sais mais j'ai un tableau a produire avec un format specifique voila pk je suis ds le code
    une idée?

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bon bah a toi d'adapter pour les colonnes sources et de destinations

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    Dim str() As String
    Dim ok() As Integer
    Dim nok() As Integer
     
    Dim i As Integer
    Dim Ligne As Long
     
    Dim Flag As Boolean
     
    Ligne = 2
     
    ReDim str(0)
     
    'Construction de la liste et comptage
     
    Do While Range("A" & Ligne).Value <> ""
        Flag = False
     
        For i = 0 To UBound(str)
            If str(i) = Range("A" & Ligne).Value Then
                If Range("B" & Ligne).Value = "OK" Then
                    ok(i) = ok(i) + 1
                Else
                    nok(i) = nok(i) + 1
                End If
                Flag = True
            End If
        Next i
     
        If Flag = False Then
            ReDim Preserve str(i)
            ReDim Preserve ok(i)
            ReDim Preserve nok(i)
     
            str(i) = Range("A" & Ligne).Value
            If Range("B" & Ligne).Value = "OK" Then
                ok(i) = ok(i) + 1
            Else
                nok(i) = nok(i) + 1
            End If
     
        End If
     
        Ligne = Ligne + 1
     
    Loop
     
    'Recopie les données
    Range("E1").Value = "Date"
    Range("F1").Value = "OK"
    Range("G1").Value = "NOK"
    Ligne = 2
    For i = 1 To UBound(str)
     
        Range("E" & Ligne).Value = str(i)
        Range("F" & Ligne).Value = ok(i)
        Range("G" & Ligne).Value = nok(i)
     
        Ligne = Ligne + 1
     
     
    Next i

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 268
    Par défaut
    merci mais c'est pas vrai ca que je cherche a faire
    a l'heure actuelle j'obtiens avec ton code ca

    Date OK NOK
    200706 1 0
    200707 0 5
    200708 2 9

    Moi j'ai besoin de

    ........ 200706 200707 200708
    ........ Ok..........Nok.....Nok

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    la variable str est une variable tableau qui va contenir dans chacun de ses index une valeur unique de date (Janvier 2005, Fevrier 2005 etc ...)
    str(0) est vide

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

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. [langage] if et boucle { ..}
    Par kacedda dans le forum Langage
    Réponses: 15
    Dernier message: 28/04/2003, 17h25
  3. [directsound] boucle de traitement de son
    Par gargle dans le forum DirectX
    Réponses: 5
    Dernier message: 24/03/2003, 10h47
  4. Sortir d'un progamme qui boucle ou qui refresh
    Par mikevador02 dans le forum C
    Réponses: 12
    Dernier message: 14/12/2002, 09h38
  5. Réponses: 2
    Dernier message: 29/05/2002, 20h43

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