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 :

Rechercher et afficher une liste de valeurs [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 50
    Points : 46
    Points
    46
    Par défaut Rechercher et afficher une liste de valeurs
    Bonjour,

    Voilà, dans un classeur, j'ai un tableau comportant de la cellule B1 jusqu'à la cellule XFD1, une suite de dates allant du premier janvier 2010 au 8 novembre 2054.

    Ces dates sont au format "mercredi 14 mars 2001".

    Dans la colonne A, de la cellule A2 jusqu'à la cellule A26, j'ai une suite d'horaires, allant de 8:00 du matin jusqu'à 20:00.

    Ce tableau est un tableau de planing concernant des rendez-vous.

    Lorsque j'ouvre le classeur, j'atterri directement dans la cellule située à l'intersection entre la colonne comportant la date courante, et la cellule comportant l'heure la plus proche de l'heure courante.

    Si une personne doit suivre plusieurs séances, je mentionne un petit numéro à droite du nom de la personne, pour indiquer le numéro de la consultation, (1, 2 ou 3) selon le contexte.

    Je souhaiterais créer une macro, qui effectuerait une recherche dans le tableau.

    Cette macro demanderait d'entrer le nom d'une personne, puis une date de début et une date de fin, sous la forme "mm/yyyy".

    Elle effectuerait alors une recherche dans l'intervale de cellule correspondant, puis afficherait une liste de résultats, suffixe inclu.

    Par exemple, si le client Jean a suivi trois consultations dans l'interval spécifié par la macro, que ça affiche une liste du style : Jean(1) telle date à telle heure, Jean(2) telle date à telle heure, etc.

    Serait-ce possible en VBA Excel?

    Je vous remercie d'avance pour votre coup de main.

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Je ne voudrais pas te saper le morale, mais ton tableau va être lourd et lent (trop de colonnes) et la construction ne te permettra de faire des filtres uniquement sur les horaires (avoir l'utilité)

    A ta place j'utiliserais une feuille en base de données (1 ligne = 1 rend vous) et une autre pour la restitution au format actuel mais avec moins de colonne. (1 semaine ou 1 mois)

    Tu pourras après créer des feuille de recherche et statistique qui pointeront toutes sur l'onglet base de données.

    Si tu veux aller plus loin, tu peux aussi utiliser une vrai BDD tel que Access, SQL server etc ...

    Cela étant dit, c'est ton projet, et pour répondre à ta question initiale, oui cette macro est possible
    Jérôme

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 50
    Points : 46
    Points
    46
    Par défaut
    Merci Jérôme pour les conseils.

    En fait, c'est pour répondre à une demande d'un ami Kyné que je souhaite concevoir ce tableau avec Excel 2007.

    Il voudrais que son tableau soit sous la forme que j'ai décri dans mon précédent post.

    Bien sûr, beaucoup de colonnes de date seront supprimées dans l'avenir, mais pour le moment, il souhaite que ces dates soient définies ainsi.

    Je remercie d'avance la personne qui pourrait m'indiquer comment réaliser cette macro.

  4. #4
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Ok,

    Peux tu envoyer un tableau test
    Jérôme

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 50
    Points : 46
    Points
    46
    Par défaut
    Merci Jérôme,

    Je te joins le tableau en PJ.

    Pour le moment, il est vide, seules les cellules d'entête de lignes et de colonnes sont renseignées.
    Fichiers attachés Fichiers attachés

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 50
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    Je tenais à vous remercier tous pour vous être penché sur mon problème, mais en cherchant un peu dans les archives, j'ai pu concevoir une macro qui répond très bien à mon attente.

    Je vous soumet son code ci-dessous.

    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
    48
    49
    Sub AfficherConsultations()
    Dim debut As String, fin As String, nom As String, heure As String, jour As String
    Dim c As Range, c2 As Range, c3 As Range, plage As Range
    Dim colonne As Integer, colonne2 As Integer, ligne As Integer, nbrConsultations As Integer, indx As Integer, HR As Integer, JR As Integer
    debut = InputBox("Saisir la date de début")
    If Not IsDate(debut) Then
         MsgBox "Ce n'est pas un format date"
    Else
         If debut <> Format(debut, "dd/mm/yyyy") Then
              MsgBox "le format doit être jj/mm/aaaa"
         End If
    End If
            fin = InputBox("Saisir la date de fin")
    If Not IsDate(fin) Then
         MsgBox "Ce n'est pas un format date"
    Else
         If fin <> Format(fin, "dd/mm/yyyy") Then
              MsgBox "le format doit être jj/mm/aaaa"
         End If
    End If
        nom = InputBox("Veuillez entrer le nom de la personne concernée par votre recherche")
    If nom = "" Then
         MsgBox "Vous n'avez entré aucun nom"
    End If
    For Each c In Range("B1:XFD1")
         If c = debut Then
              ligne = c.Row + 1
              colonne = c.Column
         End If
    Next c
    For Each c2 In Range("B1:XFD1")
         If c2 = fin Then
              colonne2 = c2.Column
         End If
    Next c2
    Set plage = Range(Cells(ligne, colonne), Cells(26, colonne2))
    nbrConsultations = Application.CountIf(plage, nom & "*")
    MsgBox nom & " a effectué " & CStr(nbrConsultations) & " consultations entre le " & debut & " et le " & fin
    For Each c3 In plage.SpecialCells(xlCellTypeConstants)
         If InStr(Trim(UCase(c3.Value)), Trim(UCase(nom))) Then
              HR = c3.Row
              JR = c3.Column
              heure = Format(Cells(HR, 1).Value, "hh:mm")
              jour = Cells(1, JR).Value
              indx = indx + 1
              MsgBox "Jour du rendez-vous " & CStr(indx) & " le " & jour & ", à " & heure
         End If
    Next c3
    End Sub
    Amicalement.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/06/2012, 10h26
  2. [WebI Xi3] Afficher une liste de valeur
    Par bonovice01 dans le forum Débuter
    Réponses: 2
    Dernier message: 28/11/2011, 13h22
  3. Afficher une liste de valeurs ,même si elles n'existent pas
    Par Mindiell dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 13/02/2010, 14h29
  4. Afficher Une Liste Selon La Valeur D'une Cellule
    Par Kevin_18 dans le forum Excel
    Réponses: 10
    Dernier message: 02/07/2007, 19h22
  5. Réponses: 14
    Dernier message: 20/04/2007, 09h09

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