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 :

Blocage sur formule SI/RechercheV; VBA obligatoire ?


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Blocage sur formule SI/RechercheV; VBA obligatoire ?
    Bonjour à tous,

    j'ai, pour mon projet de fin d'année, mission de créer un planning automatisé pour ma boite qui relie des exports de polyvalence des employés et du logiciel des congés.
    Pour mon cas j'ai réussi a tout faire, sauf qu'il me reste une dernière difficulté: Sur mon planning final ma formule va chercher les employé absents sur l'export et les notifient sur mon planning avec "CA" d'affiché si il trouve le nom, sinon il m'affiche les activités où le directeur les a affecté.
    Cela marche très bien sauf qu'il peut arriver que sur mon export de congé il y est plusieurs jours différents d'absence pour un employé (par exemple le lundi/mercredi et vendredi). Ce qui ressort sous trois lignes différentes de sur export. Sauf que ma formule ne tient en compte que la première valeur trouvée (pour l'exemple ce serait seulement le lundi) mis pas des autres lignes.

    J'ai beau chercher je ne trouve pas de solution pour qu'Excel prenne toutes les données en compte, peut importe le nombre de lignes qu'il y a par employé.

    Auriez-vous une idée ?
    On m'a parlé de VBA mais je ne m'y connais pas..

    Merci infiniment de votre aide, je joint un exemple du fichier en PJ.

    Cordialement

  2. #2
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 3
    Points
    3

  3. #3
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Bonjour et bienvenue au forum,
    Il n'y a pas de fichier dna ton message. De toute façon, conformément aux règles du forum : n'envoie pas de fichier (raison de sécurité). Décris nous ce que tu as fait pour l'instant et montre nous des captures d'écran si cela clarifie l'explication.
    A bientôt avec plus de précisions

  4. #4
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    J'ai envoyé entre temps ^^ Mais ce n'est qu'un exemple dans tous les cas.

    Voici la formule que j'ai utilisé :
    =SIERREUR(SI(ET(RECHERCHEV($B$4;'Macro INCA'!$1:$1048576;11;FAUX)<=C3;RECHERCHEV($B$4;'Macro INCA'!$1:$1048576;12;FAUX)>=C3);"CA";'Menu déroulant '!$G$2);'Menu déroulant '!$G$2)
    B4 étant l'employé recherché, "Macro INCA" st mon export des absences et "menu déroulant" représente les activités que l'employé doit traiter.

    Ma formule cherche actuellement la personne (ici B4) dans l'export et m'affiche la première valeur trouvé (qui correspod a des périodes de date de congé avec date de début et date de fin) mais si l'employé "a" plusieurs lignes de congés (comme je l'ai expliqué précedemment pour le lundi/mercredi/vendredi par exemple) la formule ne reconnait pas toutes les lignes et va soit m'afficher seulement la première période de date (toujours dans l'exemple: le lundi) ou ne rien m'afficher du tout.

    Auriez-vous une idée de modification ?

    Un grand merci d'avance à vous,

    Cordialement

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Re-bonjour,

    J'ai pensé à la fonction ET et on m'a parlé de INDEX EQUIV pour tenter de lui faire faire une boucle de recherche, mais je n'arrive pas à faire une formule valide..

    Quelqu'un aurait-il une idée ?

    Par avance merci,

  6. #6
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Re-re-bonjour à tous !

    Excusez moi d'insister, mais je vous tiens au courant de mes avancées en espérant que quelqu'un puisse me donner un coup de main.. ^^

    J'ai trouvé cette macro, qui je pense (pas sure?) me permettrai de faire ce que je veux mais je n'arrive pas à la mettre en place...

    Le but de cette macro (si j'ai bien compris) est de remplacer la RechercheV par RechTous et qui permettrait d'afficher tous les résultats d'une recherche à l'instar de la RechercheV qui ne fait apparaître que le premier résultat qu'elle trouve.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function RechTous(v, champRech AsRange, ChampRetour As Range, separateur)
     a = champRech
     temp = ""
     For i = 1 To champRech.Count
       If a(i, 1) = v Then
          temp = temp & ChampRetour(i) &separateur
       End If
     Next i
     RechTous = Left(temp, Len(temp) - 1)
    End Function
    J'ai donc pensé remplacer dans ma formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SIERREUR(SI(ET(RECHERCHEV($B$7;'Macro INCA'!$1:$1048576;11;FAUX)<=C3;RECHERCHEV($B$7;'Macro INCA'!$1:$1048576;12;FAUX)>=C3);"CA";'Menu déroulant '!$G$5);'Menu déroulant '!$G$5)
    les rechercheV par RechTous (après avoir évidemment enregistrer la macro) mais Excel ne me sort.. rien..

    Quelqu'un aurait-il une idée s'il vous plait ?

    Par avance, merci beaucoup,
    Cordialement

  7. #7
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Bonjour,

    Il faudrait que tu définisses mieux les objets et variables dans ta fonction. Certains sont définis d'autre pas. Par exemple a : est-ce une plage de cellules ? Je ne pense pas que a soit nécessaire ici, puisque tu lui donnes exactement la même valeur que champRech. Si a est une plage de cellule, il faut le définir comme cela :
    v est-ce une chaine de caractère ou une cellule ? Je pense qu'il serait plus judicieux que ce soit une cellule.
    Pour le séparateur, c'est peut-être moins grave qu'il ne soit pas déclaré, mais déclarons le comme chaine de caractère.

    Ensuite, pour lire la cellule n°i d'une plage de cellule contenant une seule colonne, on écrit :
    La syntaxe Cells(ligne, colonne) indique qu'on s'intéresse à la cellule de la ligne ligne et de la colonne colonne. Ainsi champRech.Cells(i, 1) indique qu'on s'intéresse à la cellule de la ligne i et de la colonne 1 de la plage de cellules champRech.
    Pour lire la valeur d'une cellule, on utilise la propriété Value.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function RechTous(v As Range, champRech As Range, ChampRetour As Range, separateur As String)
         Dim temp As String
         For i = 1 To champRech.Count
             If champRech.Cells(i, 1).Value = v.Value Then temp = temp & ChampRetour.Cells(i, 1).Value & separateur
         Next i
         RechTous = Left(temp, Len(temp) - Len(separateur))
    End Function
    Je ne sais pas si ta plage de recherche contient beaucoup de lignes, mais si c'est le cas, il serait sûrement plus efficace de passer par la méthode Find plutôt que de faire une boucle For. Pour cela, tu effectues une boucle While dans laquelle tu utilises la méthode Find afin de trouver la prochaine occurence de la valeur de v dans la plage de recherche. Tu fais cela tant que tu trouves une prochaine occurence.

  8. #8
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,

    dans l'onglet Résultat,
    dans la cellule G23 : h --> mercredi
    écris cette formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(G2=CHOISIR(JOURSEM(RECHERCHEV($B23;'Macro congé'!$C$2:$L$7;9;FAUX);2);"Lundi";"Mardi";"Mercredi";"Jeudi";"Vendredi";"Samedi";"Dimanche");"en congé";"pas en congé")
    çà peut être le début de la piste

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  9. #9
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,
    je continue sur cette piste : donc en c23 à k23 : la formule

    =SI(DATE(2017;MOIS(G$3);JOUR(G$3))=RECHERCHEV($B23;'Macro congé'!$C$2:$P$7;9;FAUX);RECHERCHEV($B23;'Macro congé'!$C$2:$P$7;14;FAUX);SI(DATE(2017;MOIS(G$3);JOUR(G$3))>RECHERCHEV($B23;'Macro congé'!$C$2:$P$7;9;FAUX);RECHERCHEV($B23;'Macro congé'!$C$2:$P$7;14;FAUX);""))
    Nom : Capture.PNG
Affichages : 330
Taille : 13,2 Ko

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  10. #10
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,
    j'arrive à un petit souci,

    Nom : Capture2.PNG
Affichages : 317
Taille : 13,2 Ko

    la ligne 7 : h --> 05/06/2017 n'est pas réaliste, (fin maladie le 04/08)

    la question : comment sélectionner le dernier "h" ?

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  11. #11
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Bonjour à vous riaolle, mjpmjp, le forum,

    Alors tout d'abord merci infiniment de m'aider dans mes recherches !!

    Pour commencer, Riaolle, j'ai tenté de travailler avec ce que tu m'as donné pour ma macro (Je ne pense avoir besoin de quleque chose d'autre car l'export se fait sur une semaine donc je pense qu'il y aurait maximum par export environs 30/40 lignes mais vraiment maximum). Sauf que cette fois la formule "se laisse valider" contrairement à l'ancienne qu'Excel ne me prennait pas en considération sauf que toujours..rien... Et ne m'affiche même plus les activités.. Je n'arrive vraiment pas à trouver le problème car pour moi tout paraît très logique ..
    Aurais-tu par hasard une idée sur le problème ? :/

    Merci à toi !


    Ensuite, mjpmjp,
    Merci également de m'aider !

    Tout d'abord ta formule était "a l'envers" (simplement le signe >) et là ta formule détecte les bonnes période de congés (le 05/06 puis du 07/06 à X car au départ elle affiché les périodes "en entreprise") sauf qu'elle ne m'affiche pas le 07/06 comme période de congé (je ne comprend pas pourquoi) et ensuite quelques petites incompréhensions si tu veux bien me les expliquer?:

    - je n'ai pas saisi pourquoi tu utilisais la colonne "signataire" dans ta rechercheV ? (9)
    =SI(DATE(2017;MOIS(G$3);JOUR(G$3))=RECHERCHEV($B23;'Macro congé'!$C$2:$P$7;9;FAUX);RECHERCHEV($B23;'Macro congé'!$C$2:$P$7;14;FAUX);SI(DATE(2017;MOIS(G$3);JOUR(G$3))<RECHERCHEV($B23;'Macro congé'!$C$2:$P$7;9;FAUX);RECHERCHEV($B23;'Macro congé'!$C$2:$P$7;14;FAUX);""))
    - Ensuite petit soucis, lorsque j'étant ta formule en remplacant "" par simplement "activité" Excel m'affiche N/A

    =SI(DATE(2017;MOIS(G$3);JOUR(G$3))=RECHERCHEV($B23;'Macro congé'!$C$2:$P$7;9;FAUX);RECHERCHEV($B23;'Macro congé'!$C$2:$P$7;14;FAUX);SI(DATE(2017;MOIS(G$3);JOUR(G$3))<RECHERCHEV($B23;'Macro congé'!$C$2:$P$7;9;FAUX);RECHERCHEV($B23;'Macro congé'!$C$2:$P$7;14;FAUX);"activite"))
    - et enfin, (quelque chose que je n'arrive pas a trouver comment modifier^^) l'outil; en finalité, ne devrait pas m'afficher la raison du congé (colonne 14 dans la 3ème rechercheV) mais simplement CA (ce qui me permet de faire une règle par la suite pour que toutes les absences soient grisées) aurai-tu une idée pour modifier cela ?

    Si je ne suis pas claire n’hésite pas à me relancer et j'espère que mon ton n'est pas "agressif", j'essais simplement de faire en sorte que l'on se comprenne bien

    Et pour finir la date du 05/06 est cohérente car lorsque tu regardes la colonne suivante elle réaffiche le 05/06 (en fin de période) ce qui en fait se traduit par le fait que l'employé a prit un congé pour le 05/06 uniquement puis qu'il a été en maladie à partir du 07/06 jusqu'au 04/08.

    Merci une fois encore à vous !

    Je continue mes recherches de mon côté, n'hésitez pas à me relancer,

    cordialement

  12. #12
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,

    - je n'ai pas saisi pourquoi tu utilisais la colonne "signataire" dans ta rechercheV ? (9)
    ce n'est pas la colonne 9 d'excel,
    mais la colonne de la plage C2:P7 (C2:K7 suffirait, P7 c'est pour l'exemple et utiliser MALADIE)
    colonne 9 --> date de début
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  13. #13
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,

    - Ensuite petit soucis, lorsque j'étant ta formule en remplacant "" par simplement "activité" Excel m'affiche N/A
    le "" c'était pour le cas ou il y avait "activité".....MAIS...tu as inversé (à juste titre ) et
    maintenant le "" est là en cas de "maladie,..."
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  14. #14
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Est-ce que ton champ de retour est toujours sur la colonne juste à côté de ton champ de recherche ? Si oui, tu peux essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function RechTous(v As Range, champRech As Range, separateur As String) As String
         Application.Volatile
         Dim temp As String
         Dim cel As Range
         For Each cel In champRech
             If cel.Value = v.Value Then temp = temp & cel.Offset(0, 1).Value & separateur
         Next cel
         RechTous = Left(temp, Len(temp) - Len(separateur))
    End Function
    Après, je vois pas trop pourquoi la première version ne marchait pas ... Peux-tu montrer comment tu l'appliques ?

  15. #15
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,
    cette formule est plus juste (à toi de l'inverser..)
    =SI(DATE(2017;MOIS(G$3);JOUR(G$3))=RECHERCHEV($B23;'Macro congé'!$C$2:$P$7;9;FAUX);RECHERCHEV($B23;'Macro congé'!$C$2:$P$7;14;FAUX);SI(DATE(2017;MOIS(G$3);JOUR(G$3))>RECHERCHEV($B23;'Macro congé'!$C$2:$P$7;9;FAUX);SI(DATE(2017;MOIS(G$3);JOUR(G$3))<=RECHERCHEV($B23;'Macro congé'!$C$2:$P$7;10;FAUX);RECHERCHEV($B23;'Macro congé'!$C$2:$P$7;14;FAUX);"");""))

    je t'explique la formule :

    la case G3 = "07-juin"
    la case K6 = "07/06/2017" colonne 9
    la case L6 = "04/08/2017" colonne 10
    la case P6 = "MALADIE" colonne 14

    si la date (07-juin) est egale à la date colonne 9 (debut) alors ecrit le contenu de colonne 14 (maladie),
    si la date n'est pas egale, si la date est superieure à la date de la colonne 9 , on teste si la date est egale ou inferieure à la date de la colonne 10 (fin), si c'est vrai on ecrit le contenu de la colonne 14, si c'est faut on ecrit "",
    si la date n'est pas superieure à la date de la colonne 9 on ecrit ""
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  16. #16
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,

    la formule inversée , qui ecrit "CA" ,ce qui grise la cellule
    =SI(DATE(2017;MOIS(G$3);JOUR(G$3))=RECHERCHEV($B23;'Macro congé'!$C$2:$P$7;9;FAUX);"";SI(DATE(2017;MOIS(G$3);JOUR(G$3))>RECHERCHEV($B23;'Macro congé'!$C$2:$P$7;10;FAUX);"CA";SI(DATE(2017;MOIS(G$3);JOUR(G$3))<RECHERCHEV($B23;'Macro congé'!$C$2:$P$7;9;FAUX);"CA";"")))
    le problème reste entier : plusieurs "h"

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  17. #17
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Oui, voilà mjpmjp, le soucis étant de détourner le problème pour pouvoir prendre en compte toutes les dates si il y en plusieurs...

    Riaolle, je t'explique la totale car même en étant pas débutante sur Excel, le VBA c'est une autre histoire .. ^^
    Donc je suis allée dans VisualBasic-->Module où j'ai collé ton programme, ensuite fermé (sans plus de manips?). J'essais d'afficher dans une cellule vierge =RechTous, Excel me le trouve et donc je remplace mes "RechercheV" par ce fameux "RechTous" dans ma formule de base mais vraiment rien..
    Je te joint l'image en espérant être plus claire ^^ (en jaune les cellules où devrait être affiché CA et en blanc l'activité)

    Nom : ImageVBA.png
Affichages : 537
Taille : 24,5 Ko

    Merci beaucoup !
    Cordialement

  18. #18
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Voici mon tableau de données (qui se situe sur un autre onglet) si cela peut t'aider à comprendre le problème..

    Cet export est mouvant et sera actualisé toutes les semaines. En colonne A le nom des employés absents et donc les noms que la formule devra trouver (difficulté imagée par l'employé "h" ici) et en colonnes K et L les dates de début et de fin de période que ma fomule est censée prendre en compte

    Un grand merci d'avance !
    Nom : forum 2.png
Affichages : 318
Taille : 18,9 Ko

  19. #19
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,
    on y est presque...
    =SI(OU(SIERREUR(EQUIV(E3;INDIRECT("TabCP_h[Date début de période]");0);0)>0;SIERREUR(EQUIV(E3;INDIRECT("TabCP_h[Date fin de période]");0);0)>0);"CP";SI(INDEX(TabCP_h;SIERREUR(EQUIV(E3;INDIRECT("TabCP_h[Date fin de période]");-1);0);11)<E3;"CP";"CA"))
    Nom : Capture3.PNG
Affichages : 323
Taille : 13,5 Ko

    dans la case K3 : =$F$1+60 --> 04-Aout
    si je passe à +61 --> 05-Aout , çà affiche "#VALEUR!"

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  20. #20
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,

    Nom : Capture4.PNG
Affichages : 334
Taille : 27,4 Ko

    j'ai utilisé "insérer, tableau" pour créer 2 tableaux ;

    le premier : TabCP
    et celui utilisé (temporairement) par la formule : TabCP_h, qui est dédié uniquement à "h"
    pour utiliser le premier tableau, il faudrait insérer une comparaison avec la colonne "Nom collaborateur" et "h"...

    l'utilisation du tableau permet la pérennité des formules, puisque la plage est : TabCP_x, et les colonnes : les titres

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Blocage sur code VBA
    Par jalain.gosse dans le forum VBA Access
    Réponses: 8
    Dernier message: 01/08/2015, 15h21
  2. [XL-2007] Aide sur formule "RECHERCHEV"
    Par denys30 dans le forum Excel
    Réponses: 8
    Dernier message: 14/11/2014, 09h13
  3. [XL-2003] Aide sur correction de formul SumIf en VBA
    Par fb62840 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/01/2014, 14h50
  4. probleme de selection aleatoire sur excel avec macro vba
    Par guillaume sors dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/10/2005, 10h51
  5. [CR8.5] Problème de division par zéro sur formule
    Par franck.cvitrans dans le forum Formules
    Réponses: 3
    Dernier message: 10/06/2004, 13h41

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