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 :

Problème de boucle IF [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 33
    Par défaut Problème de boucle IF
    Bonjour à tous,

    Je suis en train de développer une macro qui aidera la personne à trier ses données.
    Alors voilà, j'ai un petit soucis avec la boucle If, les premières lignes (où il y a un commentaire sont fonctionnels)

    Pouvez vous me dire si ma boucle For est bonne ainsi que ma boucle if ?

    Normalement lorsque la macro parcours la colonne J, il doit impérativement trouver la référence "7920", ou autre (que j'inscrirai plus tard), le message "Ok" me sert uniquement à me dire s'il entre bien dans la boucle. Or ici, rien ne fonctionne...

    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
    Sub Extraction()
        Range("B:B").Select 'Sélection de la colonne B
        Selection.Insert Shift:=xlToRight 'Créer la colonne envoie tout ce qu'il contient vers la droite
        ActiveCell.FormulaR1C1 = "Désignation" 'Nomme la colonne "Désignation"
     
        Dim compt As Integer
     
        For compt = 2 To Range("B65356").End(xlUp).Row
     
            If Range("J" & compt) = "7920" Then
     
                MsgBox ("Ok")
            End If
        Next compt
     
    End Sub
    Je pense avoir louper une étape..

    EDIT: Dans la fonction Range(), le paramètre est bien la colonne ainsi que le numéro de ligne non ?

    Merci beaucoup

    Aurélien

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Salut,


    Quelle est la valeur de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B65356").End(xlUp).Row
    A mon avis, elle est égale à 1, donc forcément tu rentres pas dans ta boucle.
    Tu insère une colonne en B, et tu écris dans la premier cellule, mais en dessus, tu n'as rien du tout

    A mon avis, pour ta boucle, tu devrais prendre une autre colonne que la colonne B (qui est celle que tu as insérée).
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre éprouvé Avatar de Neutthsch
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2016
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2016
    Messages : 105
    Par défaut
    Salut Baraas,

    Si tu sélectionnes une ligne de ton code et que tu cliques sur F9 (ou clique gauche dans la barre tout de suite à gauche de la ligne) tu poses un point d'arrêt.
    Cela signifie que ton code va se mettre en pause en atteignant cette ligne (avant de l’exécuter). Une fois le code en pause, tu peux le dérouler au pas à pas en cliquant sur F8 ou relancer la lecture normale (jusqu'à la fin, ou le prochain point d'arrêt) en appuyant sur F5.

    Je te propose donc de mettre un point d'arrêt avant la zone que tu suspectes défaillante, sur la ligne "For compt..." ici (si tu n'as pas d'idée tu peux même la mettre sur le Sub), et de dérouler au pas par pas avec F8.
    Ainsi tu comprendras à quel moment tu as un problème, sur quelle ligne et à quel état sont tes variables (en passant la souris dessus).

    Bon ça ne me parait pas indispensable ici mais tu peux regarder aussi comment utiliser des espions et les différentes notions de débogage.

    EDIT: Dans la fonction Range(), le paramètre est bien la colonne ainsi que le numéro de ligne non ?
    Range représente une plage de 1 à plusieurs lignes et de 1 à plusieurs colonnes. C'est donc un ensemble de pas mal de paramètres. Je ne suis pas sur de ce que tu cherches mais Cells(row,col) renvoie bien à une cellule de coordonnées (ligne,colonne)

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Comme l'a écrit illight, les données de votre colonne "B" sont déplacées en "C" avec vos deux instructions "Range(B:B)" et "Insert…". Sinon tout le reste fonctionne très bien à condition que, pour trouver "7920", cette valeur soit bien définie en texte.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 33
    Par défaut
    Merci de vos réponses !

    Je vais tester demain matin vos solutions.

    Illight, je pense que tu as raison, je me suis tromper de colonne, je vais devoir prendre la colonne J puisqu'en effet, vu que je créer une colonne B, elle est vide...

    Neutthsch, je te remercie pour ta solution, en effet, j'étais assez bloquer dans le fait de ne pas suivre le code pas à pas.. J'avais besoin de me rendre compte du déroulement de ma macro... Je testerai ça aussi demain matin

    Merci pour vos réponses, je répondrai dans la matinée si tout s'est bien passé.

    Bonne soirée

    Aurélien

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 33
    Par défaut
    Bonjour,

    Merci, tout fonctionne et les points d'arrêts me sont très utile !!

    Bonne journée à vous

    Ps: Je pense que je reviendrai vers vous pour un autre soucis un peu plus tard haha

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

Discussions similaires

  1. Problème de boucles imbriquées
    Par Gnux dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 09/12/2005, 20h26
  2. [Tableaux] Problème avec boucle
    Par MYster dans le forum Langage
    Réponses: 6
    Dernier message: 11/11/2005, 18h39
  3. Problème de boucle
    Par TheUltimaSephiroth dans le forum C
    Réponses: 8
    Dernier message: 10/10/2005, 13h58
  4. Problème de boucle
    Par Louis-Guillaume Morand dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/09/2005, 09h10
  5. Problème de boucle
    Par basclln dans le forum C++
    Réponses: 19
    Dernier message: 02/04/2005, 09h13

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