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 de recherche dans différentes plages [XL-2010]


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
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2014
    Messages : 90
    Par défaut
    Bonjour à tous,

    Mon fichier contient plusieurs onglets :
    - Le Premier DPN est l'onglet où je souhaite faire apparaître les résultats (y est déjà présent le code de l'agent/ son métier)
    - Le deuxieme SG contient différents agents (code/nom/métier/Ainsi que toutes les stats qu'ils ont réalisé)
    - Le troisième NP contient les normes que les agents doivent réaliser

    J'effectue mon traitement si le nom de l'indicateur situé sur l'onglet DPN de D7 à CZ7 est retrouvé dans la plage B2 à AJ de l'onglet NP.

    Si il est retrouvé, j'effectue le traitement dans l'onglet DPN a savoir faire une différence de ce que chaque agent a réalisé (onglet SG) vs la norme (onglet NP) pour de nombreux indicateurs. Cette différence est effectué via les différentes recherches (R et R2)

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    If DPN.Range("A8") = "" Then Exit Sub 'si la cellule A8 de l'onglet DPN est vide, sort de la procédure
     
    'Set NomIndicateur = NP.Range("B1").End(xlToRight) 'définit la plage du nom des indicateurs
     
    'M = 4
    'Indicateur = DPN.Cells(7, M)
     
    Dim Q As Integer
    Dim P As Integer
     
    For Q = 7 To Sheets("Détails Personnes Normes").Range("D7").End(xlToRight) 'Boucle sur le nom des indicateurs (onglet DPN)
    For P = 1 To NP.Range("B1" & P).End(xlToRight) 'Boucle sur le nom des indicateurs (onglet NP)
     
    If InStr(DPN.Range("D" & Q), NP.Range("A" & P)) <> 0 Then 'Si même nom pour les indicateurs effectue le traitement
     
     
    Set PL = DPN.Range("A8:A" & DPN.Range("A600").End(xlUp).Row) 'définit la plage de recherche du code agent
    Set PL2 = DPN.Range("C2:C" & DPN.Range("C600").End(xlUp).Row) 'définit la plage de recherche du métier
     
    For Each CELL In PL
    For Each CELL2 In PL2
     
    Set R = SG.Columns(1).Find(CELL.Value, , xlValues, xlWhole) 'recherche dans SG colonne 1 le code agent
    Set R2 = NP.Columns(1).Find(CELL2.Value, , xlValues, xlWhole) 'recherche onglet NP la norme métier
     
    For I = 7 To 9 'Boucle sur tous les indicateurs de l'onglet SG
    If Not R Is Nothing Then Realise = R.Offset(0, I).Value 'recherche la valeur réalisée du premier indicateur (commence colonne 7)
     
    For J = 2 To 4 'Boucle sur tous les indicateurs de l'onglet NP
    If Not R2 Is Nothing Then Norme = R2.Offset(0, J).Value 'recherche la norme à atteindre pour le premier indicateur
     
    For K = 3 To 5 'Boucle pour reporter les résultats
    CELL.Offset(0, K).Value = Realise - Norme 'précise dans la cellule la différence entre la norme et le resultat
     
     
    Set R2 = Nothing 'vide la variable R
    Set R = Nothing 'vide la variable R
     
     
    Next K
    Next J
    Next I
    Next CELL2 'prochaine cellule
    Next CELL 'prochaine cellule
    End If
    Next P
    Next Q
    J'ai essayé de multiples manières sans arriver à mes fins ..

    Je précise que j'ai une erreur incompatibilité de type à la ligne 12 !

    Merci par avance à celui qui pourra m'aidé ! Je m'y perd avec toutes ces boucles ...

    Cordialement

  2. #2
    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,

    cette ligne est irrationnelle car la fin de la boucle fait référence au compteur lui-même et égal à zéro !
    Compteur P initialisé à zéro, donc B1 & P est égal à B10

    Sans compter qu'un Range n'est pas un nombre, il manque à la fin de la ligne soit .Column soit .Row

    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2014
    Messages : 90
    Par défaut
    Salut Marc,

    Merci pour ta réponse, effectivement je ne sais pas ce que j'ai été cherché là ...

    Je me suis rendu que mes boucles ne pouvait marcher sur des colonnes ; je ne vois pas comment les exprimer en VBA par contre ...

    J'aimerai que la première boucle parcours l'entête de mes indicateurs onglet DPN de H7 jusque AP7
    La deuxième boucle, même principe, parcours l'entête des indicateurs onglet NP de B1 à AJ1

    Si l'entête des indicateurs sont identiques, j'aimerais que ça effectue mon traitement

    Et enfin que ça passe à l'entête (colonne) suivante...

    Je ne sais pas si je suis clair ..

    Cordialement

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Question certainement basique: vous ne pouvez-pas le faire avec des fonctions Excel classiques? VLOOKUP par exemple (en anglais)
    Vous pourriez fournir un bout d'exemple?

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2014
    Messages : 90
    Par défaut
    Salut Vinc_bilb,

    Je ne peux pas effectuer de recherche V, en fonction du métier de l'individu je dois stocker la norme qu'il doit atteindre (onglet NP) et ce qu'il a réalisé (onglet SG).

    Une fois ces deux valeurs stocker je veux afficher pour chaque individu la différence entre la norme et ce qui a été réalisé puis passé à l'indicateur suivant lorsqu'il n'a plus d'individu.. jusqu’à ce qu'il n'y ai plus d'indicateur dans DPN..

    Voici un fichier exemple pour y voir plus clair ! Exemple DPN.xlsm

    Cordialement

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Pour la partie Excel pur, voir propal ci-jointe en utilisant juste du VLOOKUP et du MATCH Exemple DPN.xlsm

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

Discussions similaires

  1. Probleme boucle If recherche dans base access
    Par PITP2 dans le forum ASP
    Réponses: 5
    Dernier message: 10/02/2009, 20h55
  2. recherche dans une plage de données avec filtre
    Par depi67 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/10/2008, 14h17
  3. recherche dans une plage dans des fichiers fermés
    Par kikuyu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/04/2008, 10h20
  4. Boucle If-recherche dans une BD
    Par ladywhite dans le forum ASP.NET
    Réponses: 11
    Dernier message: 20/05/2007, 09h53
  5. [date] Recherche dans une plage de dates
    Par astro84 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/06/2005, 17h13

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