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 :

Lister les groupe de plan sur VBA [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur Réseau de chaleur
    Inscrit en
    Avril 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur Réseau de chaleur
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2021
    Messages : 3
    Par défaut Lister les groupe de plan sur VBA
    Bonjour,

    Je dispose d'un fichier excel avec des données météorologiques. Il est organisé de la manière suivante:
    - Chaque feuille correspond à une année de relevé
    - Chaque feuille possède 12 groupes de plan correspondant aux 12 mois de l'année.
    Nom : Capture.PNG
Affichages : 201
Taille : 40,4 Ko
    J'ai bien la possibilité de chercher les dates dans la première colonne mais cette structure ne me plaît pas.
    Est t'il possible de récupérer la liste des groupes et les valeurs associées sur VBA ?

    Merci par avance !

    Maxime

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Je ne suis pas certain d'avoir compris ce que tu veux réaliser...

    Si les niveaux du plan correspondent aux dates, il me semble plus intéressant de se baser sur les dates que sur les niveaux de plan. Le filtre automatique, placé sur une colonne de dates, se présente un peu comme un plan avec les années puis les mois. Quel est l'intérêt d'amener du VBA là-dedans?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur Réseau de chaleur
    Inscrit en
    Avril 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur Réseau de chaleur
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2021
    Messages : 3
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut.

    Je ne suis pas certain d'avoir compris ce que tu veux réaliser...

    Si les niveaux du plan correspondent aux dates, il me semble plus intéressant de se baser sur les dates que sur les niveaux de plan. Le filtre automatique, placé sur une colonne de dates, se présente un peu comme un plan avec les années puis les mois. Quel est l'intérêt d'amener du VBA là-dedans?
    Bonsoir Pierre,
    Je souhaite sur un autre tableur, donner la possibilité de choisir une année via une liste. Que ce choix induise automatiquement une recherche dans la BDD météorologique contenant les Degré-Jour-Unifié DJU mis à jour annuellement et les introduisent dans mon premier sous la forme d'un calendrier (cf ci dessous)
    Nom : Capture.PNG
Affichages : 159
Taille : 241,2 Ko
    Je me demandais s'il est possible en VBA d'aller chercher les valeurs DJCD18 des groupes Janvier, Février, Mars ... et de les insérer avec le même ordre à partir du premier jour de chaque mois.
    Procéder par date me semblait un peu fastidieux comme méthode.
    Concernant l'intérêt du VBA, j'en ai aucune idée. J'ai commencé à développer d'autres fonctionnalités avec et je pensais continuer sur ma lancée. Jusqu'à peu, j'utilisais Excel avec ses fonctionnalités de "base". Merci de me redire si vous avez d'autres possibilités plus simple pour réaliser cela.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Il faut un peu de mise en place pour simplifier le code.

    Je pars d'une situation de départ où
    • les feuilles de données sont nommées du millésime des données qu'elles contiennent;
    • les dates renseignées, vu leur format, sont des chaines de caractères et pas des vraies dates;
    • le fichier qui contient les données s'appelle Données-Météo.xlsx et est placé dans le même dossier que le classeur "calendrier";
    • dans le classeur "Calendrier", une plage nommée choixAnnée reprend l'année choisie (on pourra en profiter pour rendre le titre du calendrier dynamique).



    Voici un code compact qui réalise la récupération des données. On devrait normalement paramétrer cela. Le code que je donne ici, bien que fonctionnel, n'est là que pour montrer la démarche et les étapes de réalisation, et doit être adapté à ta situation.

    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
    Sub Test()
      Dim i As Long
      Dim Annee As Long
      Dim wbSource As Workbook
      Dim shSource As Worksheet
      Dim nbreJours As Long
      Dim Source As Range
     
      Annee = Range("ChoixAnnée").Value
      shCalendrier.Range("b3:m33").ClearContents
      Set wbSource = Workbooks.Open(ThisWorkbook.Path & "\Données-Météo.xlsx")
      Set shSource = wbSource.Worksheets(Annee & "")
      For i = 1 To 12
        nbreJours = Day(DateSerial(Annee, i + 1, 0))
        Set Source = shSource.Range("a:a").Find(what:=Replace(Format(DateSerial(Annee, i, 1), "yyyy/mm/dd"), "-", "/"))
        shCalendrier.Cells(3, i + 1).Resize(nbreJours).Value = Source(1, 5).Resize(nbreJours).Value
      Next i
     
      wbSource.Close False
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur Réseau de chaleur
    Inscrit en
    Avril 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur Réseau de chaleur
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2021
    Messages : 3
    Par défaut
    Bonjour Pierre,

    Merci pour ton aide, je suis arrivé au bout de mon problème. Je joins la version finale adaptée à mon programme
    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
    Sub CommandButton1_click()
      Dim i As Long
      Dim Annee As Long
      Dim wbSource As Workbook
      Dim shSource As Worksheet
      Dim nbreJours As Long
      Dim dates As String
      Dim Source As Range
      Dim wbGenerator As Workbook
      Dim shCalendar As Worksheet
     
      Set wbGenerator = ActiveWorkbook
      Set shCalendar = wbGenerator.Worksheets(4)
      Annee = Range("A1").Value
      shCalendar.Range("B3:M33").ClearContents
      Set wbSource = Workbooks.Open(ThisWorkbook.Path & "\DJU depuis 1999.xlsx")
      Set shSource = wbSource.Worksheets("DJU " & Annee)
      For i = 1 To 12
        nbreJours = day(DateSerial(Annee, i + 1, 0))
        dates = "01/" & i & "/" & Annee
        Set Source = shSource.Range("A11:A389").Find(what:=CDate(dates), LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
            shCalendar.Cells(3, i + 1).Resize(nbreJours).Value = Source(1, 5).Resize(nbreJours).Value
      Next i
     
      wbSource.Close False
    End Sub
    Bonne continuation
    Maxime

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

Discussions similaires

  1. Lister les groupes d'un utilisateur
    Par filoudesbois dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 07/04/2008, 08h15
  2. WSH en JavaScript : Lister les groupes d'appartenance d'un utilisateur
    Par FlorentBVN dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/12/2007, 16h08
  3. Lister les Serveur MSSql disponible sur le réseau
    Par Andry dans le forum Bases de données
    Réponses: 4
    Dernier message: 08/11/2006, 11h09
  4. [C#]lister les bases de données sur ma machine
    Par fafa139 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 20/04/2006, 18h32
  5. Cherche à lister les adresses IP dispo sur la machine
    Par yukkyyuk dans le forum Windows
    Réponses: 3
    Dernier message: 16/03/2005, 11h50

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