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 :

ligne d'unecellule dans une boucle "for each"


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
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Par défaut ligne d'unecellule dans une boucle "for each"
    Bonjour à tous

    Je viens de coder un petit bout de programme et je n'arrive pas à comprendre ce qui va de travers

    toutes mes variables ont été définies au préalable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    With ThisWorkbook.Sheets("QUANTITE")
    
    définition de ma zone de balayage
        For Each Thecell In .Range(.Cells(3, 9), .Cells(65536, 9).End(xlUp))
    
    condition d'application
            If .Cells(Thecell.Row, 2).Value <> "" Then
            Thecell.Value = Application.WorksheetFunction.Sum(.Range(.Cells(Thecell.Row, 4), .Cells(Thecell.Row, 8)))
            End If
        Next
    End With
    D'après ce que j'ai compris des boucle for each, logiquement ma variable "Thecell" devrait balayer les cellules de "J3" à la dernière cellule non vide de la colonne "J"

    Or quand je lui demande la ligne de Thecell, il démarre à 2

    auriez vous une explication (j'ai sans doute fait une erreur ou j'ai mal compris quelque chose)

    merci d'avance

  2. #2
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Bonjour,
    = Cellule I3, pas J3.
    Je crois que tu cherches pas dans la bonne colonne, remplace 9 par 10

  3. #3
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Par défaut
    Oups, autant pour moi je m'ai trompé de numéro ^^"
    mais c'est bien la colonne J dans laquelle je veux effectuer ma boucle

    donc en donnant comme matrice "J3:J(dernière cellule non vide)" à ma boucle for each, logiquement si je lui demande quelle est la ligne de la première cellule testée, il devrait m'annoncer la ligne 3

    or là il m'annonce ligne 2

  4. #4
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    OK.
    je te propose une petite modif du code pour savoir quel est la plage renvoyée par le code, tu fais un déroulement pas à pas(appuie succesif sur F8) et tu nous dit quel est le message du msgbox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim maplage As Range
    With ThisWorkbook.Sheets("QUANTITE")
    Set maplage = .Range(.Cells(3, 10), .Cells(65536, 10).End(xlUp))
    MsgBox maplage.Address
    'définition de ma zone de balayage
        For Each Thecell In maplage
    'Condition d 'application
            If .Cells(Thecell.Row, 2).Value <> "" Then
            Thecell.Value = Application.WorksheetFunction.Sum(.Range(.Cells(Thecell.Row, 4), .Cells(Thecell.Row, 8)))
            End If
        Next
    End With

  5. #5
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Par défaut
    comme je l'avais prévu le msgbox m'indique "$J$2"

    mais pourquoi est il ausssi méchant

    au fait merci rvtoulon de prendre de ton temps pour me répondre, ça fait toujours plaisir

  6. #6
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Quel devrait être la dernière cellule non vide de la colonne J de la feuille ("QUANTITE") ?
    a part en J2 ?

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

Discussions similaires

  1. Comment transformer une balise xml dans une requete xsl:for-each
    Par Max1000p dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 07/06/2012, 09h46
  2. Problème avec une DLL dans une boucle For
    Par BraDim dans le forum Langage
    Réponses: 5
    Dernier message: 20/09/2005, 12h22
  3. [batch] incrémentation dans une boucle for
    Par bart64 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 08/09/2004, 20h05
  4. Réponses: 3
    Dernier message: 06/07/2004, 10h21

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