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 :

Optimisation : comme une rechercheV


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Par défaut Optimisation : comme une rechercheV
    Bonjour, cela fait un certain temps que je programme en VBA mais je reste sur une question que je me pose fréquemment.

    En effet, je reprogramme régulièrement en vba le code qui permet de faire comme une rechercheV.

    Comment puis je l'optimiser? Y a t il une fonction déjà faites? Je fais appelle à vos connaissances.

    Je vous mets mon codes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub part_descr()
     
        remplissage "Enveloppe_NPT", 4, "NPT_Analyse", 3
     
    End Sub
    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
    Sub remplissage(nom_feuille_origine, num_colonne_origine, nom_feuille_destination, num_colonne_destination)
     
    Dim compteur1, compteur2, max1, max2 As Integer
    Dim ref1, ref2 As String
     
     
    max1 = max_ligne(nom_feuille_origine, 1)
    max2 = max_ligne(nom_feuille_destination, 1)
     
    For compteur2 = 2 To max2
         ref2 = Sheets(nom_feuille_destination).Cells(compteur2, 1).Value
         For compteur1 = 2 To max1
            ref1 = Sheets(nom_feuille_origine).Cells(compteur1, 1).Value
            If ref1 = ref2 Then
               Sheets(nom_feuille_destination).Cells(compteur1, num_colonne_destination).Value = Sheets(nom_feuille_origine).Cells(compteur1, num_colonne_origine).Value
               Exit For
            End If
         Next
    Next
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function max_ligne(nom_feuille, num_colonne)
     
    max_ligne = Sheets(nom_feuille).Cells(Rows.Count, num_colonne).End(xlUp).Row
     
    End Function


    Merci d'avance pour vos réponses.

    Vincent

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Par défaut
    J'ai trouvé cela, mais ça ne marche pas :-( ==> "Erreur définie par l'application ou par l'objet"

    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 remplissage(nom_feuille_origine, num_colonne_origine, nom_feuille_destination, num_colonne_destination)
     
    Dim compteur1, compteur2, max1, max2, max_col As Integer
    Dim ref1, ref2 As String
     
     
    max1 = max_ligne(nom_feuille_origine, 1)
    max2 = max_ligne(nom_feuille_destination, 1)
     
    max_col = max_colonne(nom_feuille_origine, 2)
     
    For compteur2 = 3 To max2
     Sheets(nom_feuille_destination).Range(Cells(compteur2, num_colonne_destination)).Value = Application.VLookup(Sheets(nom_feuille_destination).Range(Cells(compteur2, 1)).Value, Sheets(nom_feuille_origine).Range(Cells(1, 1), Cells(max1, max_col)), num_colonne_origine, False)
    Next
     
    End Sub

  3. #3
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Hello

    Peut-être utiliser la méthode find dans Vba ?

    Exemple :

    https://www.developpez.net/forums/d1...tion-find-vba/

    Méthode site Microsoft

    https://docs.microsoft.com/en-us/off...cel.range.find

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Par défaut
    Oula tu viens contrecarré mes plans là lol

    Je n'arrive pas à comprendre comment je peux faire avec le FIND.

    Vincent

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour à vous,

    mfoxy,

    J'ai activé ton lien.
    Il me retourne un texte en anglais.

    Le voici en Français

    Méthode Find Français

    Guismoman,

    Un exemple est donné.
    Tu peux adapter celui-ci pour chaque cellule à tester donc par une boucle

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Par défaut
    Et vous avez pas la solution en prenant la rechercheV direct dans le VBA?

    je doute qu'une boucle avec un find soit efficace et plus optimiser que mon code actuel.

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 03/12/2004, 11h17
  2. comment construire une interface comme une pomme...
    Par redanium dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/10/2004, 15h35
  3. [Debutant] Optimisation d'une boucle
    Par Javatator dans le forum Langage
    Réponses: 3
    Dernier message: 25/10/2004, 18h50
  4. Cherche un objet un peu comme une TStringList
    Par Desraux dans le forum Langage
    Réponses: 6
    Dernier message: 27/07/2004, 14h04
  5. Inserer une page HTML comme une boite!
    Par thief dans le forum MFC
    Réponses: 4
    Dernier message: 16/01/2004, 21h13

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