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 :

Une boucle For Each avec ColumnDifferences


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de tony76
    Homme Profil pro
    Développeur pour le plaisir....
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur pour le plaisir....

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Par défaut Une boucle For Each avec ColumnDifferences
    Bonsoir à tous,

    Voilà je souhaiterais créer un petit code pour faire ceci:
    sachant que les données peuvent changer: exemple dans la case visite cela peux monter à 10 ou 16
    onglet départ:

    Nom : EXCEL_EXEMPLE.JPG
Affichages : 679
Taille : 76,3 Ko


    onglet arriver:

    Nom : EXEMPLE_EXCEL_2.JPG
Affichages : 588
Taille : 39,6 Ko

    je pense faire 2 boucle for each comme ceci mais pour la deuxième je voudrais faire un columnDifferences mais ça
    ne fonctionne pas, ou si vous avez une meilleurs idée merci a vous

    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
     
    'la première boucle qui gére type et IMMAT
    For Each A In .Range("C2:C" & .Range("C" & Application.Rows.Count).End(xlUp).Row)
     
        'Code qui copie les données
     
     
     
        'la 2eme boucle gére toute les visites
        For Each B In .Range("C2:C" & .Range("C" & Application.Columns.ColumnDifferences(Comparison:=ActiveSheet.Range("C" & A.Value))).Row)
     
       'Code qui copie les visite
     
     
       Next B
    Next A
    Mon problème et juste sur la 2 eme boucle je ne mais pas toutes les données dans les boucles pour ne pas surcharger
    merci

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,
    Citation Envoyé par tony76 Voir le message
    Mon problème et juste sur la 2 eme boucle
    Tu devrais le régler avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        'la 2eme boucle gére toute les visites
        For Each B In .Rows(A.Row)
            If Left(.Range(1, B.Column).Value, 6) = "VISITE" Then
       'Code qui copie les visite

  3. #3
    Membre très actif Avatar de tony76
    Homme Profil pro
    Développeur pour le plaisir....
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur pour le plaisir....

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Par défaut
    Merci pour la réponse anasecu, mais sa ne règle pas mon problème
    je m’explique

    la première boucle (A) parcours l'enssemble de la colonne C à partir de la C2
    et à chaque tour vaut la valeur de la colonne C

    et chaque tour de la boucle A la boucle B devrais valoir la totalité des visites de la valeur de A soit dans l'exemple vaut 4 pour 4 visites etc...
    et la A devrait valoir a chaque tour la valeur de C2 puis C6 si on suis ma logique

    et la je bloque
    en espèrent que je réexplique bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    'la 2eme boucle gére toute les visites
        For Each B In 'égale la quantité de la colonne E (visite) d'après la valeur de la colonne C soit dans l'exemple 4 etc...
     
       'Code qui copie les visite
        Next B

  4. #4
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonsoir,
    Citation Envoyé par tony76 Voir le message
    chaque tour de la boucle A la boucle B devrais valoir la totalité des visites de la valeur de A soit dans l'exemple vaut 4 pour 4 visites etc...
    Il me semble bien que c'est ce que fait ma proposition : l'as tu seulement essayée ?
    Il faut bien sûr rajouter les cumuls que tu veux lorsque la condition est valide.

  5. #5
    Membre très actif Avatar de tony76
    Homme Profil pro
    Développeur pour le plaisir....
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur pour le plaisir....

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Par défaut
    Citation Envoyé par anasecu Voir le message
    Bonsoir,

    Il me semble bien que c'est ce que fait ma proposition : l'as tu seulement essayée ?
    Il faut bien sûr rajouter les cumuls que tu veux lorsque la condition est valide.
    oui je les tester a la seconde ou je les vu, car je me fait des nœuds au cerveau depuis un moment
    la boucle que tu ma proposé

    B = vide
    .Rows(A.row) = vide

    au premier tour dans la boucle A

    B = 2
    .Rows(A.row) = 2

    la boucle fait un tour et sort, hors je voudrais qu'elle boucle sur l’ensemble des visite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    For Each B In .Rows(A.Row)
    et le if me donne une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Left(.Range(1, B.Column).Value, 6) = "VISITE" Then

  6. #6
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Citation Envoyé par tony76 Voir le message
    et le if me donne une erreur
    au temps pour moi, ainsi cela devrait mieux aller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Left(.Cells(1, B.Column).Value, 6) = "VISITE" Then

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/08/2011, 04h24
  2. trié des date avec une boucle for each
    Par alex santus dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 03/09/2009, 11h00
  3. test avant d'entrer dans une boucle For each cell in selection
    Par totoro02 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 13/01/2009, 09h27
  4. comment effacer un element dans un collection dans une boucle for each
    Par medkarim dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 17/10/2008, 12h48
  5. [VBA-E]PB sur une boucle for each next
    Par rond24 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 31/07/2006, 15h47

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