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 :

Problème VBA type recherchev et concatener


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Par défaut Problème code VBA type recherchev et if
    Bonjour,

    J’ai un petit problème, je souhaiterai faire une macro qui puisse faire les opérations suivantes :

    Dans un fichier, j’ai deux onglets « Synthèse » et « Suivi utilisateur ».

    Dans l’onglet « Suivi utilisateur », j’ai trois colonnes Nom, service et état

    La colonne état peut contenir 3 valeurs soit Validé, Supprimer ou « vide »

    Dans l’onglet « Synthèse », j’ai deux colonnes Service et état

    La colonne état peut être validé ou non validé

    Si il y a un seul nom du service qui n’est pas validé ou supprimé alors l’état est non validé.
    Si tous les noms sont soit validé ou supprimé alors l’état du service est validé.

    Par exemple :

    Onglet « Suivi utilisateur »

    Nom Service état
    Ju DAF Validé
    So DAF Supprimé
    Se DIF
    Bu DRH Validé
    Xc DRS
    Ne DAF Valid2
    Du DIF Validé

    Onglet « Synthèse »

    Service état
    DAF Validé
    DIF Non validé
    DRH Validé
    DRS Non validé

    Ainsi, je souhaiterais faire un code VBA qui puisse donner ces résultats à la colonne état de l’onglet « Synthèse ».
    Je vous remercie pour votre aide.

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Sans vba
    En B2 de Synthèse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(SOMMEPROD(('Suivi utilisateur'!$B$1:$B$700=A2)*('Suivi utilisateur'!$C$1:$C$700="")*1)=0;"Validé";"Non Validé")
    Tire vers le bas

  3. #3
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Par défaut Problème VBA type recherchev et concatener
    Bonjour,

    Je souhaiterai faire une sorte de recherchev avec concatener.

    Je m'explique, dans un fichier excel j'ai deux onglets "Synthèse" et "Suivi Utilisateur".
    Dans l'onglet "Suivi Utilisateur", j'ai deux colonnes service et adresse mail.
    Dans l'onglet "Synthèse", j'ai deux colonnes service et mail équipe.

    Je souhaiterai que dans la colonne mail équipe, il y a toutes les adresses mails de l'équipe sous forme de concatener.

    Par exemple:

    Onglet "Suivi Utilisateur"

    Service adresse mail
    DAF jjj@com
    DIF KK@COM
    DAF HH@COM
    DRH OOO@COM
    DS AAA@com
    DIF iii@com
    DAF cc@com
    DAF uuu@com


    Onglet "Synthèse"

    Service mail équipe
    DAF jjj@com; HH@COM; cc@com;uuu@com
    DIF KK@COM; iii@com
    DRH OOO@COM
    DS AAA@com


    Merci pour votre aide

    Julien

  4. #4
    Membre éclairé Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Par défaut
    Hello

    j'ai une solution rapide en utilisant un dictionnaire:

    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
     
    set dico=createobject("scripting.dictionary")
    nbLignes=Sheets("Suivi Utilisateur").Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
    for ligneID=1 to nbLignes
       id=Sheets("Suivi Utilisateur").cells(ligneID,1)
       valeur=Sheets("Suivi Utilisateur").cells(ligneID,2)
      if not dico.exists(id) then 
              dico.add id,valeur
      else
             dico(id) = dico(id) & ";" & valeur
      endif
     
      Sheets("Synthese").cells.clearcontents
     
      ligneID=1
      Sheets("Synthese").cells(ligneID,1) ="Service" 
      Sheets("Synthese").cells(ligneID,2) ="mail équipe"
     
      ligneID=2
      foreach key in dico
         Sheets("Synthese").cells(ligneID,1) =key
         Sheets("Synthese").cells(ligneID,2) =dico(key)
         ligneID=ligneID+1
      next
    pas testé mais devrait marcher

    ++
    Nico

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/04/2015, 12h09
  2. problème VBA Excel rempalcer rechercheV
    Par sharox dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/11/2013, 09h03
  3. Problème de type chaîne
    Par champijulie dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 12/05/2005, 20h23
  4. Réponses: 4
    Dernier message: 30/01/2005, 14h23
  5. [Sybase] Problème de type sous ASE
    Par Hotchotte dans le forum Sybase
    Réponses: 1
    Dernier message: 18/12/2004, 11h04

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