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 :

Faire coïncider des valeurs correspondant à une même date


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    vagabond
    Inscrit en
    Octobre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : vagabond

    Informations forums :
    Inscription : Octobre 2016
    Messages : 24
    Points : 10
    Points
    10
    Par défaut Faire coïncider des valeurs correspondant à une même date
    Bonjour,

    Je fais appel à vous car j'ai un problème que je n'arrive pas à résoudre de manière "simple".

    J'ai un tableau disposé comme ceci:
    Nom : tab.png
Affichages : 341
Taille : 28,1 Ko

    Comme vous pouvez le voir, la colonne p3 a moins de dates que les deux autres. Or, je voudrais que toutes valeurs correspondant à une même date soient sur la même ligne, et que les dates qui ne sont pas disponibles pour chaque p soient supprimées. A la fin, il ne resterait donc plus que les dates qui sont disponibles pour tous les p, et chaque ligne correspondra à une date.

    J'ai bien sûr penser à utiliser les dictionnaires, mais je souhaiterais éviter cela.

    Si quelqu'un a une idée d'algorithme, je suis preneur!

    En vous remerciant,

    Clément

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Bonjour,

    l'algo est simple : comparer les dates en ligne et si une date n'est pas à sa place,
    insérer une cellule vide dans les colonnes date et donnée …

    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 267
    Points
    34 267
    Par défaut
    Salut

    tu peux tres bien faire une boucle sur les dates, avec un test dans chacune des 3 colonnes avec la recopie de la valeur.

    exemple a adapter (code pas optimal non plus hein ) :
    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
    ' le code ecrira la date dans la colonne H, les valeurs des p1, p2 et p3 en I, J  et K
    Dim dt As Date
    Dim i As integer, j as integer
    i = 1
    For dt = #01/01/2016 To Date
        i=i+1
        Range("H" & i).value = dt
        For j = 2 To Range("B65536").End(xlup).row
            If Range("B" & j).value= dt then
                Range("I" & i).value = Range("C" & j).value
            End If
         Next j
         For j = 2 To Range("D65536").End(xlup).row
             If Range("D" & j).value= dt then
                  Range("J" & i).value = Range("D" & j).value
             End If
         Next j
         For j = 2 To Range("F65536").End(xlup).row
             If Range("F" & j).value= dt then
                  Range("K" & i).value = Range("G" & j).value
             End If
        Next j
    Next dt
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  4. #4
    Membre à l'essai
    Homme Profil pro
    vagabond
    Inscrit en
    Octobre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : vagabond

    Informations forums :
    Inscription : Octobre 2016
    Messages : 24
    Points : 10
    Points
    10
    Par défaut
    Merci pour vos réponses très rapides!

    Jean-Philippe, votre proposition répond en partie à mon problème, mais le souci est que je ne sais pas à l'avance combien de colonnes il y aura dans mon fichier. Ici il y a p1 p2 p3 mais il peut y avoir p1 ... pN.

    Je vais essayer de généraliser votre code.

    Merci encore,

    Clément

Discussions similaires

  1. [XL-2010] recopie des valeurs d'une même ligne
    Par dede_bo dans le forum Excel
    Réponses: 1
    Dernier message: 22/06/2016, 08h46
  2. Réponses: 8
    Dernier message: 10/08/2011, 19h43
  3. [XL-2003] recopier des valeurs correspondant à une donnée
    Par spico45 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/02/2010, 11h51
  4. Réponses: 4
    Dernier message: 18/12/2009, 13h44
  5. Un timer pour faire varier des valeurs pour une période donnée.
    Par zimoun dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 22/10/2009, 01h42

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