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 :

VBA chercher plusieurs fois une valeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Ergonome
    Inscrit en
    Mars 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2018
    Messages : 2
    Par défaut VBA chercher plusieurs fois une valeur
    Bonjour à tous,

    Etant débutante au VBA, je me permets de vous poser cette question ; certainement simple pour vous, mais je bloque complètement là.

    Voici mon problème :

    J'ai une première feuille, intitulée REPORT avec comme info codes, tranche et nombre

    J'ai une seconde feuille, nommée TOTAL avec presque les mêmes infos : codes, tranches & total


    Un code peut avoir plusieurs tranches ; il y a une ligne par code et tranche

    Exemple :
    Code Tranche Nombre
    159 4 0
    159 9 0
    547 15 0
    547 54 0


    Ce que j'aimerais : sur la feuille REPORT avoir le chiffre "total" dans la colonne nombre de la feuille TOTAL.

    Suivant l'exemple, je recherche le code "159" dans la feuille TOTAL, il me prend la 1ère valeur qu'il trouve, mais si la tranche n'est pas la même alors il ne fait rien (ce qui est bon) mais le code avec la bonne tranche existe quand même dans la feuille TOTAL, donc j'aimerais qu'il la trouve.


    Voici la base de macro que j'ai :




    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
    24
    25
    26
    27
    28
    29
    30
    For i = 2 To nb
     
     
    code = Cells(i, 3)
     
    tranche = Cells(i, 6)
     
     
    Set a = Sheets("total").Columns(1).Find(code)
     
    If Not a Is Nothing Then
     
    tranche2 = Sheets("total").Cells(a.Row, 12)
     
    If tranche2 = tranche Then
     
     
            Cells(i, 24) = Sheets("total").Cells(a.Row, 6)
     
     
    End If
     
    Else
     
    Cells(i, 24) = ""
     
    End If
     
     
    Next i



    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Bonjour,

    Pourquoi ne pas utiliser une fonction Excel ? avec une concaténation code-tranche une recherchev suffit.
    Ce sera plus simple qu'une boucle.

    Mais si vraiment tu tiens à boucler, intéresse toi à la méthode findnext https://msdn.microsoft.com/en-us/lib...ffice.11).aspx

  3. #3
    Nouveau candidat au Club
    Femme Profil pro
    Ergonome
    Inscrit en
    Mars 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2018
    Messages : 2
    Par défaut
    Bonjour,

    Ce serait certainement plus simple une fonction mais là ce n'est pas une option : j'ai absolument besoin d'avoir la version en macro, je ne peux pas faire autrement


    Merci pour le lien

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Citation Envoyé par LowlowTyo Voir le message
    Ce serait certainement plus simple une fonction mais là ce n'est pas une option : j'ai absolument besoin d'avoir la version en macro, je ne peux pas faire autrement
    Allume l'enregistreur de macro, fait ta fonction, éteints le, un peu de nettoyage et voilà tu as un code prêt à l'emploi.

  5. #5
    Expert éminent
    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
    Par défaut
    Bonjour !

    Citation Envoyé par LowlowTyo Voir le message
    Ce serait certainement plus simple une fonction mais là ce n'est pas une option :
    j'ai absolument besoin d'avoir la version en macro, je ne peux pas faire autrement
    Comme une fonction / formule de feuille de calculs d'Excel est utilisable en VBA (j'ai pensé aussi à SOMMEPROD …),
    le code s'en trouve souvent simplifié et plus efficace qu'une usine à gaz avec une boucle !
    Donc avant de commencer un code, se poser d'abord la question de ce qui peut déjà être réalisé côté Excel.
    Bref, Penser Excel Avant VBA !

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  6. #6
    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 LowlowTyo Voir le message
    Ce que j'aimerais : sur la feuille REPORT avoir le chiffre "total" dans la colonne nombre de la feuille TOTAL.
    D'accord avec halaster08 pour conseiller plutôt une fonction Excel, mais je proposerais plutôt la fonction SOMME.SI.ENS() qui semble parfaitement adaptée à ton cas.

    Ce serait certainement plus simple une fonction mais là ce n'est pas une option: j'ai absolument besoin d'avoir la version en macro, je ne peux pas faire autrement
    Peut-on en connaitre la raison ?

Discussions similaires

  1. [XL-2010] VBA recopier n fois une valeur dans n colonnes qui se suivent
    Par Tonio Saeba dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 19/02/2016, 11h51
  2. [XL-2013] Somme des cellules(-1,0) si la plage contient plusieurs fois une valeur
    Par ledevil dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/08/2015, 12h16
  3. Réponses: 2
    Dernier message: 13/08/2014, 12h42
  4. [VBA-Excel] copier plusieurs fois une colonne dans une feuille Excel
    Par ash_rmy dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 09/08/2006, 18h43
  5. Réponses: 5
    Dernier message: 05/01/2006, 18h43

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