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 :

comparaison de 2 feuille avec plage variable


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Points : 181
    Points
    181
    Par défaut comparaison de 2 feuille avec plage variable
    bonjour à tous.

    voici le code suivant


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
       'represente le nombre de ligne de ma feuil1 ce nb commence toujours à 2 mais
             For iii1 = 2 To Sheets("pronoelimination").UsedRange.Rows.Count 'va jusqu'a la derniere ligne non vide de la feuille pronoelimination
            If Sheets("pronoelimination").Range("a" & iii1).Value = Sheets("résultat").Range("A" & INDEXCOURSEFILTREligne).Value Then 'les 2 index  des 2 feuilles doivent etre identique
     
              For indexfiltre9 = 7 To Sheets("pronoelimination").UsedRange.Columns.Count
                           If Sheets("pronoelimination").Cells(iii1, indexfiltre9) = Res(combinaisonN°, InK) Then chxeliminer = chxeliminer + 1 'si chx identique à n° combi alors combi eliminer
                      Next indexfiltre9
     
                End If
             Next iii1

    la ou je coince , c'est sur cette partie de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ......
    For indexfiltre9 = 7 To Sheets("pronoelimination").UsedRange.Columns.Count
    ........
    dans ma feuille "pronoelimination" je dois parcourir de la colonne G2 à la colonne AA (soit 20 colonne)
    en partant de la ligne 2 à la derniere ligne non vide.
    Entre chaque ligne je fais mon test comme dans la totalite du code ci-dessus
    mais le nombre de cellule non vide dans plage GXX à AAXX est variables.
    parfois j'ai que 2 cellule de remplies, puis pour une autre ligne je peux avoir 15 cellules de remplies


    peut on optimiser ce code pour ne pas balayer sustematiquement les colonnes?


    merci de votre aide

    oscar

  2. #2
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Points : 307
    Points
    307
    Par défaut Comparaison
    Le code ne fournis pas toutes les infos , on ne comprend pas comment est mis à jour le INDEXCOURSEFILTREligne...

    Pour le traitements des colonnes , suivant le formatage du fichier , il y a lieu ou non de balayer les 20 colones :

    ex si le fait que la colonne 10 ne contienne pas de ligne , fait que les colonnes 11 à 20 sont vides , alors tu peux mettre un exit for .
    Si ça n'est pas le cas , tu dois traiter les 20 colonnes .


    Avec un exemple de fichier ou une meilleur description , on doit pouvoir faire plus .

  3. #3
    Membre habitué
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Points : 181
    Points
    181
    Par défaut
    bonjour code facile
    on ne comprend pas comment est mis à jour le INDEXCOURSEFILTREligne...
    oups en effet Indexcoursefiltreligne est issue d'une boucle



    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
     
    For INDEXCOURSEFILTREligne = 4 To derligne
    ...........
     
       'represente le nombre de ligne de ma feuil1 ce nb commence toujours à 2 mais
             For iii1 = 2 To Sheets("pronoelimination").UsedRange.Rows.Count 'va jusqu'a la derniere ligne non vide de la feuille pronoelimination
            If Sheets("pronoelimination").Range("a" & iii1).Value = Sheets("résultat").Range("A" & INDEXCOURSEFILTREligne).Value Then 'les 2 index  des 2 feuilles doivent etre identique
     
              For indexfiltre9 = 7 To Sheets("pronoelimination").UsedRange.Columns.Count
                           If Sheets("pronoelimination").Cells(iii1, indexfiltre9) = Res(combinaisonN°, InK) Then chxeliminer = chxeliminer + 1 'si chx identique à n° combi alors combi eliminer
                      Next indexfiltre9
     
                End If
             Next iii1
     
     
    ........
    next indexcoursefiltreligne

    pour le detail
    dans la feuille pronoelimination
    les donnees en colonne G à AA sont consecutives sur une ligne mais le nombre total de colonnes par ligne peut varier.
    le contenu sont des nombres de 1 à 20
    ex ligne 2 G2à J2 j'ai dans chaque cellule (G2,H2,I2,J2) un nombre soit G2=12, H2=1, I2=4,j2=17, le reste de la plage est vide
    ligne 3 G3 à H3 j'ai G3=1, H3=17,le reste de la plage est vide
    etc....

    pour le balayage de la feuille pronoelimination
    il faut systematiquement balayer la plage GXX à AAXX

    en sachant que XX est le n° de la ligne commence toujours à 2


    cela est il plus clair!!

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Points : 181
    Points
    181
    Par défaut
    bonjour

    pour la ligne de code suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    For indexfiltre9 = 7 To Sheets("pronoelimination").UsedRange.Columns.Count
    je l'ai transformé en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    For indexfiltre9 = 7 To Sheets("pronoelimination").Range("G" & iii1).End(xlToRight).Column

    cela semble fonctionner mais je ne sais pas si cela est optimisé

  5. #5
    Membre habitué
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Points : 181
    Points
    181
    Par défaut
    bonjour
    je complique toujours
    dans le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    For indexfiltre9 = 7 To Sheets("pronoelimination").Range("G" & iii1).End(xlToRight).Column
    actuellement je commence en colonne G et je finis sur la derniere colonne vide .

    mais comment peut on faire pour preciser si on veut commencer non pas en colonne G mais en colonne H .
    vous allez me dire on remplace dans le code G par H mais
    je pense plutot poser à 'utilisateur' : a partir de quelle position voulez vous commencer ?
    si il repond 1 ce sera G , si il repond 2 H, ETc......

  6. #6
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    si il repond 1 ce sera G , si il repond 2 H, ETc......
    Une remarque en passant :Si tu veux travailler par position, utilises Cells plutôt que Range

  7. #7
    Membre habitué
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Points : 181
    Points
    181
    Par défaut
    merci je regarde cela

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

Discussions similaires

  1. Creation de feuilles avec nom variable
    Par Potzo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/08/2010, 10h28
  2. suppression feuille avec nom variable
    Par miopie dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/07/2010, 10h23
  3. VBA - Graphique avec plage variable
    Par virstyle dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/06/2010, 11h48
  4. Création de validation de donnée avec plage variable
    Par Krovax dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/02/2009, 13h14
  5. Fonction "SOMME.SI" avec plage variable
    Par marc56 dans le forum Excel
    Réponses: 3
    Dernier message: 26/11/2008, 15h52

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