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 :

Créer une boucle avec rechercheV


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    alternant
    Inscrit en
    Mai 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : alternant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 16
    Points : 12
    Points
    12
    Par défaut Créer une boucle avec rechercheV
    Bonjour,

    Je souhaite simplement créer une boucle avec le code ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sheets("Feuil2").Range("A2").Resize(UBound(Tabl2, 1), 1) = Tabl2
        With Sheets("Feuil1")
        .Range("H2").Value = WorksheetFunction.VLookup(.Range("A2").Value, Sheets("Feuil2").Range("A2:B300"), 2, False)
        End With
        With Sheets("Feuil1")
        .Range("H3").Value = WorksheetFunction.VLookup(.Range("A3").Value, Sheets("Feuil2").Range("A2:B300"), 2, False)
        End With
        With Sheets("Feuil1")
        .Range("H4").Value = WorksheetFunction.VLookup(.Range("A4").Value, Sheets("Feuil2").Range("A2:B300"), 2, False)
        End With
    Car je dois effectuer cette recherche pour 300 lignes et j'ai déjà un code volumineux j'aimerais savoir comment créer une boucle.

    Merci d'avance,

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Sheets("Feuil1")
        for i = 2 to 4
            .Range("H"&i).Value = WorksheetFunction.VLookup(.Range("A"&i).Value, Sheets("Feuil2").Range("A2:B300"), 2, False)
        next i
    End With

  3. #3
    Membre à l'essai
    Homme Profil pro
    alternant
    Inscrit en
    Mai 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : alternant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Merci en revanche il me met :

    erreur d'execution '1004' : Impossible de lire la propriété VLookup de la classe WorksheetFunction

    C'est une erreur qui concerne ce qu'il y a dans les cellules? où il faut que je cherche du côté déclarer la variables?

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Bonjour,

    commencer déjà par vérifier manuellement la formule dans une cellule de la feuille de calculs !
    Une fois cette formule fonctionnelle, la poster ici …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 33
    Points : 48
    Points
    48
    Par défaut
    Bonjour !
    Voici une boucle simple et facilement modifiable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub recherH()
    Dim y As Long
    For y = 1 To 300
        If cells(y,8) = 'ta recherche
        Then
    Next y
    End Sub
    y correspond à ton nombre de ligne; ici 300 lignes
    8 correspond à H (8eme lettre de l'alphabet)
    Le programme cherche ce que tu veux de H1 à H300, tu peux maintenant en faire ce que tu veux.

    N'oubliez pas de mettre les balises #code !

    Cordialement,
    Un aspirant à la programmation

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Pour qui connait un tant soit peu le B-A-BA d'Excel une boucle est inutile
    car il suffit juste d'insérer directement dans la plage de cellules la - bonne - formule !

    En attendant la bonne formulation, de nombreux exemples sont déjà présents dans les discussions de ce forum …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 33
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Marc-L Voir le message

    Pour qui connait un tant soit peu le B-A-BA d'Excel une boucle est inutile
    Je me suis penché sur le VB il y a une semaine et la première chose que j'ai remarqué est que c'est bien plus simple qu'une formule à entrer dans une cellule et que les possibilités sont bien plus grandes.
    Cependant ce serait avec joie de savoir comment pourrait être cette formule car je n'en ai aucune idée.
    Les boucles sont des méthodes de bourrins je te l'accorde mais elles sont efficaces !

  8. #8
    Invité
    Invité(e)
    Par défaut
    C'est vrai que le VB peut-être plus simple qu'une formule Excel mais dans le cas des boucles, c'est généralement très gourmand à l'exécution. Si une boucle est évitable grâce à une formule Excel c'est mieux.
    Dernière modification par AlainTech ; 04/08/2017 à 07h09. Motif: Suppression de la citation inutile

  9. #9
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Oui c'est cela car souvent les boucles sont bien moins efficaces !
    La semaine dernière sur un forum étranger pour supprimer des lignes par boucle :  10 minutes d'exécution.

    Via le B-A-BA d'Excel sans boucle :  moins d'une minute (dans les 30 secondes) !
    En optimisant le code via un objet externe à Excel :  ~ une seconde !

    Donc la première question à se poser avant de commencer un code surtout pour un débutant :  que peut déjà réaliser Excel ? …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  10. #10
    Membre à l'essai
    Homme Profil pro
    alternant
    Inscrit en
    Mai 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : alternant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Alors la formule que Xiirf (merci à vous) a posté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Sheets("Feuil1")
    For x = 2 To 55
    .Range("H" & x).Value = WorksheetFunction.VLookup(.Range("A" & x).Value, Sheets("Feuil2").Range("A2:B300"), 2, False)
    Next x
    End With
    fonctionne très bien, cependant dans mon code je supprime des lignes inutiles (vide) sur Feuil1 (tout les jours le nombre de lignes change et peut atteindre 300), si je dépasse 55 (le nombre de ligne sur ma Feuil1 d'aujourd'hui) j'ai donc l'erreur d'execution mentionnée sur le message au-dessus. En fin de compte pour répondre à ceci je pense qu’au lieu de dire je vais jusqu'à 300 j'aurais dû dire je vais jusqu'à la dernière ligne non vide.

    Pour Overeath je vous remercie et test votre code dès que j'ai trouvé comment reformuler la parti de code de Xiirf ^^

    cordialement,

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 33
    Points : 48
    Points
    48
    Par défaut
    Effectivement, je ne connais que les bases++ d'Excel mais je n'ai entendu parlé d'une formule pouvant chercher un cellule parmi 300 cellules possibles.. à part en VBA et c'est d'ailleurs grâce à ça que je m'y suis mis.
    Alors si quelqu'un maîtrise les formules Excel, je serai ravie de voir comment il va s'y prendre !

  12. #12
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    C'est hyper simple car B-A-BA d'Excel :   il suffit juste d'entrer en VBA la formule comme manuellement !

    Il y a deux manières, et quelle que soit celle choisie, en activant l'Enregistreur de macro
    puis en saisissant la formule manuellement dans la première cellule de la plage :
    une base de code est livrée sur un plateau !

    Donc en attendant la formule de feuille de calculs du créateur de cette discussion,
    voir déjà les nombreux exemples dans ce forum exploitant directement les formules …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  13. #13
    Membre à l'essai
    Homme Profil pro
    alternant
    Inscrit en
    Mai 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : alternant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Re,

    Merci cela fonctionne correctement avec la petite modif qui me vas bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ligfin = Cells(Cells.Rows.Count, "A").End(xlUp).Row
     
    With Sheets("Feuil1")
    For x = 2 To ligfin
    .Range("H" & x).Value = WorksheetFunction.VLookup(.Range("A" & x).Value, Sheets("Feuil2").Range("A2:B300"), 2, False)
    Next x
    End With
    A bientôt =)

  14. #14
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    Et dire qu'il n'y a pas besoin de boucle ! …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  15. #15
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 33
    Points : 48
    Points
    48
    Par défaut
    Mais alors comment aurais-tu fais?
    C'est intéressant mais si tu ne vas pas au bout de tes explications on ne peut pas comprendre.

  16. #16
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Merci de ne pas citer l'intégralité d'un message juste prédédent, aucun intérêt à part nuire à la lisibilité de cette discussion …

    C'est tout bête comme déjà expliqué post #12 et ai plusieurs fois explicitement demandé à l'initiateur de cette discussion
    de clairement indiquer la formule utilisée manuellement, au moins celles des deux premières cellules car tout part de là !
    Apparemment il n'a pas l'air intéressé ! …  Ce n'est pas grave son code actuel s'il n'y a pas beaucoup de cellules à traiter
    mais plus il y a de cellules plus la boucle rame !

    Sinon il y a déjà assez d'exemples dans les discussions de ce forum …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

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

Discussions similaires

  1. [Débutant] Créer une boucle avec des checkbox
    Par Shennong dans le forum VB.NET
    Réponses: 2
    Dernier message: 19/07/2012, 15h00
  2. Créer une boucle avec une condition
    Par kaboche dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/10/2011, 09h55
  3. Créer une boucle avec if et continue ?
    Par Elriks dans le forum C#
    Réponses: 4
    Dernier message: 06/04/2011, 13h29
  4. Créer une boucle avec condition
    Par mfontan dans le forum MATLAB
    Réponses: 2
    Dernier message: 26/06/2008, 17h14
  5. [PHP-JS] Comment créer une boucle avec des headers
    Par djinnwatcher dans le forum Langage
    Réponses: 10
    Dernier message: 17/07/2006, 15h48

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