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 :

boucle VBA recherche de valeur


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
    Chargé d'affaire
    Inscrit en
    Novembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2019
    Messages : 14
    Par défaut boucle VBA recherche de valeur
    Bonjour,
    Je fais appel à vos connaissances pour réaliser un projet professionnel.

    J'ai un fichier, qui calcul tout seul a partir de petites données. (je vous joint un exemple condensé)

    selon les données les résultats peuvent bouger dans une seconde feuil.
    J'ai donc en colonne A mis 1 ou 0 si je veux garder la ligne ou non.

    Le VBA devra donc chercher tout les 0 de cette colonne et sélectionner la ligne puis la supprimer, puis passer à la suite.

    Exemple 1 :

    Feuil 1 :
    A=oui
    B=oui
    C=oui

    Feuil2 :
    A
    B
    C

    Exemple 2 :

    Feuil 1 :
    A=oui
    B=non
    C=oui

    Feuil2 :
    A
    C

    Je ne suis pas habitué aux forum et ma demande peut être incomplète, dites moi si vous souhaitez plus de données

    rechercher les ligne a supprimer.xlsm

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Je n'ai pas ouvert ton fichier joint mais une erreur classique dans ce type de procédure est de faire une boucle procédant du haut vers le bas (suivant l'ordre des numéro de ligne).

    Il faut faire l'inverse : aller du bas vers le haut.
    Par exemple, si ta boucle est "For To", il faut mettre un Step -1 pour signifier qu'on va "à rebours".

  3. #3
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2019
    Messages : 14
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Je n'ai pas ouvert ton fichier joint mais une erreur classique dans ce type de procédure est de faire une boucle procédant du haut vers le bas (suivant l'ordre des numéro de ligne).

    Il faut faire l'inverse : aller du bas vers le haut.
    Par exemple, si ta boucle est "For To", il faut mettre un Step -1 pour signifier qu'on va "à rebours".
    Merci pour la réponse rapide. Honnêtement je ne comprend pas bien le Step-1

    Pour infos je suis parti de cette base :
    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
    19
    20
    21
    22
    23
    Sub Purge()
     
    Dim numéro As Integer
    Dim celluletrouvee As Range
    Dim ligne As Integer
    Dim col As Integer
     
    numéro = "0"
     
    Set celluletrouvee = Range("A1:A10000").Find(numéro, lookat:=xlPart)
     
    If celluletrouvee Is Nothing Then
    MsgBox ("Pas trouvé")
    Else
    ligne = celluletrouvee.Row
    col = celluletrouvee.Column
    MsgBox ("Cellules trouvé")
    celluletrouvee.Select
    Rows(ActiveCell.Row).Select
        Selection.Delete Shift:=xlUp
    End If
     
    End Sub
    1) Cela marche mais il n'y a pas de boucle et donc il s'arrete sur chaque ligne. si j'ai 100 lignes avec un 0 je devrais cliquer 100 fois sur le bouton
    2) Le 0 et 1 est obtenu si la ligne contient quelque chose.
    Mais apparemment le VBA ne veux pas savoir si la cellule à 0 ou 1.
    J'ai une cellule qui contient 1 (obtenue grâce a une formule), mais il me la sélectionne quand même.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Masta945 Voir le message
    numéro = "0"
    Les guillemets sont la marque d'une chaine de caractère (le type String).
    Ta variable étant un Integer, ils ne sont pas utiles.

    1) Cela marche mais il n'y a pas de boucle et donc il s'arrete sur chaque ligne. si j'ai 100 lignes avec un 0 je devrais cliquer 100 fois sur le bouton
    Pour en savoir plus sur les boucles, lire ça : https://silkyroad.developpez.com/vba/boucles/
    et ça : https://bidou.developpez.com/article/VBA/ (en particulier les pages 46 à 50).

    Ne pas oublier aussi que la recherche doit se faire du bas vers le haut.
    Il faut donc ajouter un paramètre SearchDirection:=xlPrevious.
    Lire ça : https://msdn.microsoft.com/fr-fr/lib...6(v=office.15)

  5. #5
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Voir l'aide en ligne sur la méthode FindNext :
    https://docs.microsoft.com/fr-fr/off...range.findnext

    Ou, encore, la Fonction FindAll de Chip Pearson : http://www.cpearson.com/excel/findall.aspx

  6. #6
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2019
    Messages : 14
    Par défaut
    Bonjour et merci pour vos réponse.
    D'après vous il vaut mieux que je me concentre sur les boucles For Next ou Do Loop?

Discussions similaires

  1. [Toutes versions] VBA - Rechercher une valeur dans un PDF
    Par pak987 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 17/06/2024, 17h22
  2. Réponses: 3
    Dernier message: 02/02/2018, 23h20
  3. Réponses: 6
    Dernier message: 10/03/2017, 07h38
  4. [XL-2010] Excel VBA recherche de valeur de formule dates
    Par sharivary dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/11/2014, 00h56
  5. [2013] boucle VBA (recherche à partir d'un nom et copier coller)
    Par billy255 dans le forum Microsoft Office
    Réponses: 2
    Dernier message: 21/05/2014, 11h43

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