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

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Points : 7
    Points
    7
    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 chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

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

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Points : 7
    Points
    7
    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 chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    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
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Points : 7
    Points
    7
    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 chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

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

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  7. #7
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Ah ben tu poses juste la question à laquelle j'allais répondre: grosse erreur de code de ma part vu que la dernière cellule non vide est bien la J2

    Je suis un gros boulet ... parfois

    désolé de t'avoir fait perdre du temps

+ 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