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 vb excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut boucle vb excel
    salut,

    Je travaille pour un besoin ponctuelle sur une macro sous excel.
    J'ai donc un tableau avec des en têtes séparés par plusieurs lignes et plusieurs colonnes.
    J'ai commencé à faire une boucle pour déterminer les cellules aux intersections de mes en têtes de lignes et de colonnes (cellules non vides).

    Mais la boucle ne fonctionne pas...

    merci d'avance pour un petit coup de pouce.

    julien

    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
    Private Sub CommandButton1_Click()
    QICalc.Hide
     
    Dim max_line As Integer
    Dim max_col As Integer
    Dim num_samp As Integer
    Dim num_loci As Integer
    Dim num_rep As Integer
    Dim line As Integer
    Dim col As Integer
    line = 3
    col = 2
     
    max_line = TextBox1
    max_col = TextBox2
    num_samp = TextBox3
    num_loci = TextBox4
    num_rep = TextBox5
     
    Do While line < max_line
        If Not IsEmpty(Cells(line, 1)) Then
            Do While col < max_col
                If Not IsEmpty(Cells(2, col)) Then
                Cells(line, col).Select
                With Selection.Interior
                    .ColorIndex = 3
                    .Pattern = xlSolid
                Cells(line, col).Formula = line
                End With
                End If
                col = col + 1
            Loop
        End If
    line = line + 1
    MsgBox ("line " & line) 'test
    Loop
     
     
    End Sub

  2. #2
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Trace les valeurs immédiatement après inputation de
    max_line = TextBox1
    max_col = TextBox2
    num_samp = TextBox3
    num_loci = TextBox4
    num_rep = TextBox5

    tu vas être surpris et vite comprendre ton erreur.

    PS : Veuillez penser à utiliser les balises de code SVP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonsoir,
    Si tu disais plutôt ce que tu veux faire exactement.

    jpleroisse

  4. #4
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    salut,

    Effectivement ma variable col n'est pas au bon endroit.
    En la mettant après la boucle 'Do While line < max_line', ça fonctionne mieux .

    Je vais essayer d'expliquer ce que je veux faire pour la suite sans paraitre trop confus. Il s'agir de définir un génotype consensus pour des études génétiques sur les oiseaux du panama.

    j'ai un tableau du genre (celui à 6 lignes, mais ça peut varier):

    123
    123
    124
    125
    124
    121

    il faut que j'arrive a compter combien de fois chaque valeur est présente.
    - si j'ai une seule valeur présente au moins deux fois alors c'est la valeur que je recherche(mon génotype).
    - si j'ai deux valeurs présentes au moins deux fois alors je ne peux pas renvoyer de valeur en particulier (je renvoie en message "ambigu" le génotype doit être définit manuellement).
    - si je n'ai aucune valeur présente au moins deux fois, je renvoie un message "impossible de définir de génotype".

    je vais donc essayer de faire une macro qui prend la première valeur et compte combien de fois elle se trouve. Si c'est au moins deux fois, je la met de coté.
    Puis passer à la seconde valeur, tester pour voir si elle est différente de la précédente. Si c'est le cas, je compte combien de fois elle se trouve. Si c'est au moins deux fois et que la précédente aussi, je renvoie le message "ambigu" et j'arrête.
    Sinon je test la troisième valeur. Si elle est différente des deux premières déjà testées, je compte combien de fois elle se trouve, etc...

    je ne sais pas trop si c'est clair? Dans le cas contraire, dites moi quoi preciser.

    Je suis demandeur de tous les petits conseils


    Merci

    Julien

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Si celà peu te donner un point de départ, ce code compte le nombre de fois que 125 est contenu dans la colonne A.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub Compter()
    Dim CompterCellules As Integer
      Dim iCell
      Application.ScreenUpdating = False
      For Each iCell In Range("A1:A2000")
        If iCell.Value = 125 Then
        CompterCellules = CompterCellules + 1
        End If
      Next iCell
       MsgBox CompterCellules
      Application.ScreenUpdating = True
    End Sub
    jpleroisse

Discussions similaires

  1. Boucle VB Excel
    Par aiss57 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/04/2010, 11h20
  2. Boucle sous Excel
    Par GeomR dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/04/2008, 09h58
  3. Boucles vba Excel
    Par viscere dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/07/2007, 07h07
  4. imprimer en boucle fichier excel
    Par digger dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/12/2005, 16h38

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