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 :

Indices pour cellules dans boucle for [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 50
    Par défaut Indices pour cellules dans boucle for
    Bonjour,

    Je me suis mis depuis peu au VBA, et j'ai quelques difficultés.
    Je voudrais faire une macro qui parcours des cellules, qui teste si elles sont inférieurs à -1, et si c'est le cas qu'elle les vide et les colorie en rouge.
    Ces cellules vont de D3 à G5 (ça ne fait pas beaucoup mais ce n'est qu'un essai pour appliquer avec beaucoup plus de cellules), et j'ai pensé imbriquer deux boucles For Next ayant chacune un indice (i et j) censés représenter la ligne et la colonne.
    Mais ça ne marche pas.
    Quelqu'un pourrait-il m'aider ? Je suis ouvert à d'autres solutions mais j'aimerais quand même résoudre ce problème avec mes indices i et j.

    Voici mon code :

    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
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 2009-06-09 par NXP20176
    '
     
    '
        Dim i As Integer
        Dim j As Integer
     
        For i = 4 To 7
            For j = 3 To 5
                If Range(Cells(j, i)) < (-1) Then
                    Range(Cells(j, i)).Select
                    Selection.ClearContents
                     With Selection.Interior
                     .ColorIndex = 3
                     .Pattern = xlSolid
                     End With
                End If
            Next
        Next
     
    End Sub
    Merci d'avance pour vos réponses.

  2. #2
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Il s'agit de parcourir une collection ou un tableau, vois dans l'aide et sur le forum à ces mots clefs..
    Regardes pour commencer à For each du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub parexemple()
    Dim cell As Range
     
    For Each cell In Range("D3:G5")
        If cell.Value > 5 Then MsgBox cell.Address & "  " & cell.Value & "  c'est trop !"
    Next cell
    End Sub
    rajout : vois au moins les premières pages de cet excellent tuto :

    http://bidou.developpez.com/tutoriels/ExcelVBA/

    cordialement,

    Didier

  3. #3
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour,


    ta boucle fonctionne la syntaxe pour les range n'est pas bonne.

    Essai comme ça :

    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
        Dim i As Integer
        Dim j As Integer
     
        For i = 4 To 7
            For j = 3 To 5
                If Cells(j, i) < -1 Then
                   With Cells(j, i)
                     .ClearContents
                     With .Interior
                     .ColorIndex = 3
                     .Pattern = xlSolid
                     End With
                   End With
                End If
            Next
        Next

  4. #4
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Re,


    J'ai seulement corrigé ton code, la méthode dOrmonth est plus "propre"


    Edit: DeaD, pas raffraichi !

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Salut,

    Quelques petits problèmes de syntaxe juste :
    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
     
    Sub Test()
     
        Dim i As Integer
        Dim j As Integer
     
        For i = 4 To 7
            For j = 3 To 5
                If Cells(j, i).Value < -1 Then
                    Cells(j, i).Select
                    Selection.ClearContents
                    With Selection.Interior
                        .ColorIndex = 3
                        .Pattern = xlSolid
                    End With
                End If
            Next
        Next
     
    End Sub
    EDIT : F5 nom de Diou !!!

  6. #6
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 50
    Par défaut
    Merci beaucoup, je vais essayer avec vos corrections.
    Entre temps j'ai trouvé une autre méthode dans la FAQ que j'ai adaptée et qui marche (http://silkyroad.developpez.com/vba/boucles/) :

    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
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 2009-06-09 par NXP20176
    '
     
    '
        Dim Cell As Range
     
        For Each Cell In Range("D3:G5")
            If Cell.Value < (-1) Then
                Cell.Select
                Selection.ClearContents
                 With Selection.Interior
                 .ColorIndex = 3
                 .Pattern = xlSolid
                 End With
            End If
        Next
     
    End Sub
    Si ça marche avec vos corrections, je mets le sujet en résolu.

  7. #7
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 50
    Par défaut
    Merci beaucoup à vous,
    Vos corrections marchent très bien.

    Je mets le sujet en résolu.

    A bientôt.

  8. #8
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Juste une remarque sur ces 3 lignes, sans doutes issues de l'enregistreur de macro qui répond à ce que fiat l'utilisateur d'ou les multiples select :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
              Cell.Select 'ici on selectionne a chaque fois la cellule dans la feuille
                Selection.ClearContents
                 With Selection.Interior
    peut être remplacé par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    with            Cell
     .ClearContents
            With .Interior
             '...
             end with
    '...
     end with

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

Discussions similaires

  1. 0 pour les mois dans boucle for
    Par stmastma dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/02/2010, 14h28
  2. Réponses: 3
    Dernier message: 04/08/2006, 19h24
  3. problème dans boucle for de lecture de fichier ini
    Par chourmo dans le forum Delphi
    Réponses: 3
    Dernier message: 06/07/2006, 09h31
  4. Aide pour syntaxe de boucle "FOR"
    Par tribaleur dans le forum ASP
    Réponses: 2
    Dernier message: 31/05/2006, 14h03
  5. [JLabel] JLabel dans boucle for
    Par clairenes dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 06/01/2006, 00h47

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