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 :

analyse d'une plage à partir de la cellule active


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 106
    Par défaut analyse d'une plage à partir de la cellule active
    Et hop, deuxième post de la journée.

    Reproblème.
    J'ai besoin d'analyser une plage de cellule selon 2 critères.
    Pour cela j'ai créé une boucle for next qui analyse ma plage avec ce 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
     
    Dim i As Integer
    Dim limhaute
    Dim limbasse
     
    limhaute = Range("F1").Value
    limbasse = Range("F2").Value
     
    For i = 0 To 15
    If Cells(15 - i, 1).Value >= limhaute Then
    Cells(15 - i, 1).Style = "style x"
    Cells(15 - i, 1).Activate
    Exit For
    End If
    Next i
    Ce qui me met en noir la dernière cellule à remplir le critère N°1 et active cette cellule.
    Maintenant je voudrais analyser le reste de ma plage selon un autre critère à partir de cette cellule active.

    Mais pour l'instant je coince un poil!!

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    i te donne le N° de ligne... Pour analyser la suite de ta plage, tu fais une boucle partant de i
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For j = i to derniereligne
    Par contre, si tu ne trouves pas la données, ton i sera = à 16. Si cette éventualité est possible, j'utiliserais un boolean
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim ok as boolean
    For i = 0 To 15
    If Cells(15 - i, 1).Value >= limhaute Then
        Cells(15 - i, 1).Style = "style x"
        Cells(15 - i, 1).Activate
        Ok = True
        Exit For
    End If
    Next i
    If ok then
         For j = i to derniereligne
            ...
         Next
    End if

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 106
    Par défaut
    Ok ça fonctionne en reprenant j = i.
    C'est une méthode que je ne connaissais pas.
    Mais c'est normal aussi, je suis encore une bite en vba

    Merci et à tout à l'heure sûrement pour un nouveau problème!!!!

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Par défaut
    j'anticipe alors!

    si tu vas de 0 à 15 concernant i alors ton 15 - i ira de 15 à... 0 ! et tu auras un bug (je pense).
    Prends i de 0 à 14

    Bonne journée

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Comprends pas. Si la donnée n'est pas trouvée dans la première boucle, alors i aura 16 pour valeur. 16 devient la ligne suivante. Donc la boucle suivante commence à la ligne 1 de la recherche commençant sur la ligne i.
    Précise ce que tu veux dire.
    A+

    Edit
    J'ajoute que si la donnée n'est pas trouvée on n'entre pas dans la boucle suivante...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Par défaut
    Je sais pas, ça se trouve je raconte n'importe quoi!

    Je pensais que dans cette partie là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For i = 0 To 15
    If Cells(15 - i, 1).Value >= limhaute Then
    Lorsque i = 15 alors is cherchera :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(0, 1).Value >= limhaute Then
    et buggera... je dis du caca?

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Ok ! Je n'avais pas "tilté". Tu as raison. 15 - 15 = 0 et cells(0, 1) => Erreur !
    Ce que tu dis.
    Il serait effectivement plus indiqué de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For i = 15 to 1 step -1
        Cells(i, 1).Style = "style x"
        Cells(i, 1).Activate
        Ok = True
        Exit For
    End If
    Pour la suite, je laisse à buhrne le soin de fixer la ligne depuis laquelle il doit poursuivre sa recherche...
    Merci ML0808, y'en a un qui suit et c'est toi

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 106
    Par défaut
    Merci les gars!!
    En fait j'avais la discut après la réponse de ouskel'nor, ça marchait bien dans un classeur où mon analyse se faisait sur la première colonne à partir de la première ligne (pour l'exemple et pour comprendre).
    Seulement j'ai retranscrit tout ça sur le classeur excel que je voulais utilisé et dans ce cas mon analyse commence à la ligne 41 de la colonne 6. Et là c'est le délire depuis hier!!!
    Pour ma première boucle pas de problème il me trouve la bonne valeur, mais pour la seconde c'est n'importe quoi !!! Soit il me trouve une cellule genre à la ligne 7 (soit bien en dehors de ma plage) soit genre à la ligne ligne 156 sur une cellule vide !
    J'ai retourné le pb dans tous les sens et je ne vois pas ce qui cloche.
    Je vais essayé avec votre rectification!

  9. #9
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 106
    Par défaut
    Bon ça à l'air de fonctionné beaucoup mieux avec votre rectif!!
    Je laisse le post ouvert jusqu'à ce soir si jamais j'ai un nouveau souci.
    Vu que je vais l'essayer avec plein de configs différentes en essayant de ne rien laissé au hasard.

    Merci encore!!!

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/02/2011, 11h08
  2. [XL-2003] Instancier une Plage à partir de celulles de différentes Feuilles
    Par henripec dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/09/2009, 15h55
  3. compter sur une ligne à partir de derniere cellule non vide
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/04/2009, 18h23
  4. Insertion de données dans une plage à partir d'un formulaire
    Par andre55 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/10/2007, 10h48
  5. Remplir une plage à partir d'un tableau
    Par roudy78 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/05/2007, 10h56

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