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 :

PB sur recherchev [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2011
    Messages : 205
    Par défaut PB sur recherchev
    Bonjour le forum

    Mon problème se résume dans la formule de recherchev dans 31 feuilles qui représentent les jours du mois, car je veux sommer les heures supplémentaires effectués durant mois par les salariés dans une feuille de cumul.
    chaque salarié à un ID unique, j'ai essaie avec cette formule mais ca ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RECHERCHEV(A7;INDIRECT((F6:AJ6)&"!$A$5:$k$500");8;0)
    merci d'avance.

  2. #2
    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 : 67
    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 fonction
    Bonsoir gestionnaire_rh, Bonsoir le Forum,

    Créer une formule à Référence 3D comportant la fonction RechercheV me semble, à moi Marcel (...), compliqué.

    Au demeurant, je peux te proposer une fonction VBA, à adapter

    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
    Public Function calcul(mat As String) As Integer
     
    Dim nbheures As Integer
     
    nbheures = 0
     
    For Each sh In Worksheets
     
            With sh
                    If .Name <> "Cumul" Then _
                            nbheures = nbheures + WorksheetFunction.VLookup(mat, .Range("A1:B5"), 2)
            End With
     
    Next sh
     
    calcul = nbheures
     
    End Function
    Reviens si nécessaire.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2011
    Messages : 205
    Par défaut fonction
    Bonjour Marcel

    je vous remercie pour votre réponse, mais vu que je n'ai pas beaucoup de lotion en vba, j'ai encore besoin d'information, bon j'ai insérer un module et copier la macro mais comment peut t'on donner le résultat ds une cellule et puis la faire glisser pour l'ensemble des salariés et comment exécuter ta macro.
    j'ai remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each sh In Worksheets
    par , j'ai d'autre feuilles et je crois que je n'ai pas fait d'erreur.

    encore merci pour ton aide.

  4. #4
    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 : 67
    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 fonction
    Gestionnaire_rh,

    Attention, ici la variable sh est affectée à une feuille, il ne s'agit donc pas d'un compteur (i)

    Je voudrais savoir
    - si toutes les autres feuilles, hormis celle de synthèse, sont concernées
    - le nom de ta feuille de synthèse
    - si les zones de recherches sont homogènes dans toutes les feuilles.

    En dernier ressort, tu peux joindre un classeur simplifié comportant 2 feuilles au lieu de 31, et surtout sans données confidentielles.

    Pour répondre à ta question, la fonction personnalisée s'utiise dans une feuille de calcul comme une fonction normale

    D'ailleurs, elle figure dans la liste proposée lorsque tu actives le menu Insertion \ Fonction.

    Je reste à ta disposition toute la soirée s'il le faut.

    A plus.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2011
    Messages : 205
    Par défaut
    Bonjour

    je t'envoi le fichier en pièce et j'espere que tu vas arriver a trouver la solution, les feuilles concernés sont nommés 01,02,03,,,,,,,31 et j'ai d'autre feuilles qui ne sont pas concernés, pour les plages ils sont tous identiques.

    merci encore.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2011
    Messages : 205
    Par défaut
    Bonjour Marcel

    j'ai essaie mais toujours pas de bon résultat, voila le fichier sans l'extension .rar

    Cordialement gestionnaire_rh.

  7. #7
    Membre Expert

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Billets dans le blog
    1
    Par défaut
    as tu essayé l'outil excel de consolidation ? ( données-consolidation)

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2011
    Messages : 205
    Par défaut
    Bonjour DARANC

    je te remercie pour l'astuce mais sans résultat, en plus j'ai 31 feuilles avec un nombre de lignes variables pour les 31, mais ça me fait penser a une solution= un copier coller des 31 feuilles des unes au dessus des autres dans une plage vide a droite de mon tableau de cumul mensuel puis peut être faire sommeprod selon le critere de identifiant.
    pouvez vous m'aider sur le code de copier coller les plages de la feuille 01 a 31.

    Merci d'avance.

  9. #9
    Membre Expert

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Billets dans le blog
    1
    Par défaut
    la consolidation tien compte des nombre de ligne différent il suffit de prendre la plus grange plage pour la consolidation de départ les nom qui ne sont pas sur toutes les feuilles sont ajoutés et il n'y a qu'un nom pour les cumul

  10. #10
    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 : 67
    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 fonction
    Bonjour Gestionnaire_rh, Darnc, et le Forum,

    Daranc,

    Dans le cas du classeur de notre amie, des colonnes sont intercalées.
    Mias j'addmettrai volontiers ta solution si ele peut s'appliquer ici. Don't Act.

    Au cas où, Gestionnire_rh,

    Si le cumul des heures supplémentaires désigne les colonnes 50, 100 % de ton classeur, alors je te propose une fonction à 2 arguments.

    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
    Public Function nbsup(mat As Variant, nat As Integer) As Integer
     
    Dim nbheures As Integer
     
    nbheures = 0
     
    If nat <> 50 And nat <> 100 Then
        MsgBox "Le 2ème argument de la fonction doit être 50 ou 100"
        nbsup = 999
        Exit Function
    End If
     
    For i = 1 To 1
     
            num = Format(i, "0#")
            equiv = WorksheetFunction.Match(mat, Sheets(num).Range("A5:A13"), 0)
            nbheures = nbheures + WorksheetFunction.Index(Sheets(num).Range("A5:K13"), equiv, 10 + IIf(nat = 50, 0, 1))
     
    Next i
     
    nbsup = nbheures
     
    End Function
    Pour entrer la formule dans ta feuille de synthèse

    Si tu veux le cumul des 50 %

    Si tu veux le cumul des 100 %

    Si tu rentres une autre valeur que 50 ou 100 en 2ème argument, alors un pop up d'erreur apparaîtra, et la valeur retournée sera 999

    A titre d'exemple, je te joins ton classeur avec cette fonction intégrée.
    Voir les formules pour l'identifiant 184.
    Fichiers attachés Fichiers attachés

  11. #11
    Membre expérimenté
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2011
    Messages : 205
    Par défaut
    Bonjour Marcel

    voila ce que j'attendais, ça marche très bien et je te remercie de m'avoir sauver.

    Cordialement Gestionnaire_rh

  12. #12
    Membre expérimenté
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2011
    Messages : 205
    Par défaut
    Bonjour Marcel,

    je t'envoi le fichier et j’espère que tu pourra juste rajoute une instruction a ton code parce qu'il marche très bien.

    Cordialement

    Gestionnaire_rh

  13. #13
    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 : 67
    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 Pb RechercheV
    Bonjour Gestionnaire_rh, Bonjour le Forum,

    La principale difficulté pour coder une telle formulation réside en la gestion des doubles cotes ".
    La meilleure façon de procéder à mon avis est de coder pas à pas chaque partie de la formule jusqu'à son intégralité, en s'aidant de la fenêtre Exécution.

    En cours de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print laformulepartielle
    Pour afficher la fenêtre Exécution CTRL + G

    Enfin, il faut bien noter que dans le code les points-virgule qui séparent les arguments de la formule sont remplacés par des virgules.

    Donc ici, il te faut remplacer dans ton code le premier groupe de formules par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With colorig.Offset(0, i)
            réf = """" & Format(Range("E6").Offset(0, i).Value, "0#") & """"
            .Formula = "=IF(VLOOKUP($A7,INDIRECT((" & réf & ")&""!$A$5:$k$500""" & "),6)=$AT$3,VLOOKUP($A7,INDIRECT((" & réf & ")&""!$A$5:$k$500""" & "),7),0)"
            .Value = .Value
     End With
    Un conseil enfin, ta feuille de synthèse devrait porter un nom différent des arguments de ta cellule de réfénce AT3, autrement dit un nom différent d'un chantier (ici P010)
    De plus, ta cellule AT3 devrait être validée par une liste (celle des chantiers)
    Menu Données / Validation.

  14. #14
    Membre expérimenté
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2011
    Messages : 205
    Par défaut
    Bonjour Marcel

    Je vous remercie pour votre aide, c'est vraiment ce que je chercher et ça marche très bien.
    juste si vous pouvez me donner l'explication ou l’intérêt du complément que vous avez rajouter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print laformulepartielle
    moi je l'ai inséré juste après la formule de recherchev (6 et 7), je crois que je ne me suis pas tremper.
    encore une fois merci beaucoup.

    Cordialement.

    Gestionnaire_rh

  15. #15
    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 : 67
    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 explication Debug.Print
    Bonjour Gestionnaire_rh, Bonjour le Forum,

    Comme la formule est assez compliquée à coder, je suggère d'en vérifier le code pas à pas dans la fenêtre Exécution.

    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print VLOOKUP($A7,INDIRECT((" & réf & ")&""!$A$5:$k$500""" & "),6)
    Bien entendu, une fois que le résultat est acquis, cette ligne de code disparaît.

    Si c'est le cas, n'oublie pas de positionner ton post en "Résolu".

    Bon Dimanche à tous.

  16. #16
    Membre expérimenté
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2011
    Messages : 205
    Par défaut
    Bonjour Marcel,

    je vous remercie pour ton explication, enfin je pense que j'ai compris cette définition et je vais m'appliquer sur le vba car c'est vraiment très intéressant comme langage, encore merci beaucoup Marcel pour votre assistance et bonne journée

    Cordialement

    Gestionnaire_rh

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

Discussions similaires

  1. Question sur RechercheV entrainant des calculs
    Par babybell dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 16/11/2009, 09h44
  2. [XL-2003] défaut sur recherchev
    Par bosk1000 dans le forum Excel
    Réponses: 3
    Dernier message: 22/09/2009, 15h12
  3. Question sur Recherchev
    Par Carmiel dans le forum Excel
    Réponses: 4
    Dernier message: 06/09/2008, 10h42
  4. Recherchev en vba sur plusieur vlaleur
    Par Dream Master dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/06/2007, 15h44
  5. [VBA-E] RechercheV si changement de valeur sur une cellule
    Par bonilla dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/01/2007, 16h22

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