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 :

Creation regroupement, recherche et affectation valeur MIN dans chaque regroupement [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Indépendant spécialiste Cognos/Essbase
    Inscrit en
    Août 2008
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant spécialiste Cognos/Essbase
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2008
    Messages : 384
    Par défaut Creation regroupement, recherche et affectation valeur MIN dans chaque regroupement
    Bonjour à tous,

    Je sollicite votre aide pour cette macro qui dépasse mes compétences ou du moins dans un temps raisonnable sachant que je ne connais rien au VBA ou si peu. Bref, quelqu'un pourrait il m'aider ?

    Voici mon probleme :

    j'ai un fichier de plusieurs milliers de lignes et plusieurs 10aines de colonnes. J'ai besoin d'automatiser le processus suivant sachant que les données changent quotidiennement :

    1 - faire un regroupement (tri) de l'ensemble des lignes sur 2 colonnes : ID (colonne B) puis Date Théo (colonne C)
    2 - au sein de chaque regroupement généré identifier la dateMin(REALDHAS) (colonne D)
    3 - affecter pour chaque regroupement cette dateMin trouvée au sein de ce regroupement dans la Col E
    4 - Si la colonne B = #N/A ==> la colonne E = colonne D pour chaque ligne

    Est-ce que cela est possible via une macro ?

    Merci d'avance pour toute aide parce que là.....
    Fichiers attachés Fichiers attachés

  2. #2
    Membre chevronné
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 413
    Par défaut
    Ca devrait être possible mais la je comprends absolument rien de ce que tu veux faire

    Tu veux pas poster ton code aussi et des images histoire de m'orienter sur ce que tu veux réellement faire

  3. #3
    Membre éclairé
    Homme Profil pro
    Indépendant spécialiste Cognos/Essbase
    Inscrit en
    Août 2008
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant spécialiste Cognos/Essbase
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2008
    Messages : 384
    Par défaut
    M**** !!!
    Le probleme c'est que le code y'en a pas, je sais pas faire
    Moi qui pensait pourtant avoir été clair comme de l'eau de roche. Meme avec le fichier en pj c'est pas plus clair ?
    Ben difficile de faire mieux mais je vais essayer.

    Alors :
    1 - Colonne B, C, D et E dans cet ordre sont les colonnes de tri de toutes les lignes
    2 - Ca va générer des "blocs" de lignes (regroupements) ayant un même ID (colonne B), une même THEORITOCALDHAS (colonne C) mais avec, parfois, des Quai (colonne D) de valeurs différentes et des REALDHAS différentes (Colonne E).

    Exemple : le regroupement de lignes de 10 à 32 ==> un même ID : "BW472HV", une même THEORITOCALDHAS : "18/07/2016 05:45:00" mais deux Quai différents : "JFV" et "JM5" et deux REALDHAS différentes : "18/07/2016 06:10:47" et "18/07/2016 06:49:52"

    3 - l'idée est donc d'identifier pour ce regroupement la THEORITOCALDHAS la plus petite. Ici : "18/07/2016 06:10:47" et de l'affecter dans la colonne DHAS réalisée corrigée (Colonne F) à toutes les lignes du même regroupement.
    4 - Si la colonne B est = #N/A, on met dans la colonne E la valeur de la colonne D ligne a ligne.

    Et l'objectif est d'automatiser tout cela pour lancer la proc tous les jours avec des données différentes :
    1- le tri automatique
    2- l'identification des regroupements ainsi créés
    3- la détermination de la REALDHAS la plus petite pour chaque regroupements
    4- l'affecter à la colonne F pour chaque regroupement

    Dans mon fichier il y a ainsi 4 regroupements :
    ligne 4 à 9
    ligne 10 à 32
    ligne 33 à 58
    ligne 59 à 79

    Et dans la vraie vie ce fichier comportera 50 colonnes mais toujours fixes et jusqu'à 6000/7000 lignes.
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent
    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
    Par défaut

    Bonjour, bonjour !

    Purée, les règles de ce forum sont encore plus explicites, il aurait fallu commencer par là ‼

    Ne pas oublier l'Enregistreur de macros, l'ami du débutant livrant une base de code sur un plateau !
    Sans compter les nombreux tutoriels à disposition sur ce forum et les exemples dans les discussions …

    Voilà, voilà !

    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour à tous,

    une proposition, à tester.
    Pas de colonne vide si tu veux que les 50 soient prises en compte.
    eric

    edit :
    2 - Ca va générer des "blocs" de lignes (regroupements) ayant un même ID (colonne B), une même THEORITOCALDHAS (colonne C)
    Je crois que je me suis fait piégé par ton fichier...
    Le seul ID ayant des THEORITOCALDHAS différents est la dernière ligne sur laquelle tu n'as pas mis de ligne séparant un bloc.
    Actuellement un bloc est donc même ID.
    Fichiers attachés Fichiers attachés

  6. #6
    Membre chevronné
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 413
    Par défaut
    Ceci devrai marcher, pense à activer Microsoft Scripting Runtimes dans Outils => Références :

    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
    Sub essai()
    Dim Dico As New Dictionary
     
    col = 2 'Première colonne avec des données
     
    Do Until Cells(4, col).Value = "" 'Tu fais le code tant que les cellules correspondantes ont des données
     
    '#--------------------------Parti tri des données--------------------------#
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$B$1:$F$" & Range("B" & Rows.Count).End(xlUp).Row), , xlYes).Name = "Tableau" & col
    ActiveSheet.ListObjects("Tableau" & col).Sort.SortFields.Clear
    ActiveSheet.ListObjects("Tableau" & col).Sort.SortFields. _
            Add Key:=Range("$B$1:$F$" & Range("B" & Rows.Count).End(xlUp).Row), SortOn:=xlSortOnValues, Order:=xlAscending, _
            DataOption:=xlSortNormal
        With ActiveSheet.ListObjects("Tableau" & col).Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
     
    '#--------------------------Parti vérif REALDHAS--------------------------#
    For i = 4 To Range("B" & Rows.Count).End(xlUp).Row 'de la ligne 4 jusqu'à plus de données
    IDTHEO = Range("B" & i).Value & Range("C" & i).Value 'concatener de l'ID et THEOtruc
        If Not Dico.Exists(IDTHEO) Then 'Verif que le concatener n'existe pas déjà
        Dico.Add IDTHEO, Range("E" & i).Value 'Si il existe pas récup du REALDHAS
        ElseIf Dico(IDTHEO) > Range("E" & i).Value Then Dico.Items(IDTHEO) = Range("E" & i).Value 'Si il existe vérification que le REALDHAS est bien le plus petit
        End If
    Next i 'Ligne suivante
     
    '#--------------------------Parti colonne F--------------------------#
    For i = 4 To Range("B" & Rows.Count).End(xlUp).Row 'de la ligne 4 jusqu'à plus de données
    IDTHEO = Range("B" & i).Value & Range("C" & i).Value 'concatener de l'ID et THEOtruc
    Range("F" & i).Value = Dico(IDTHEO) 'Mise du plus petit REALDHAS dans la colonne F
    Next i 'Ligne suivante
     
    col = col + 5 'Prochain tableau
    Loop
     
    End Sub

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

Discussions similaires

  1. [XL-2007] recherche d'une valeur texte dans une plage de cellules
    Par blackstrange dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 13/07/2012, 16h26
  2. [XL-2000] Recherche d'une valeur relative dans une liste
    Par Excel_pour_les_nuls dans le forum Excel
    Réponses: 5
    Dernier message: 06/10/2010, 19h46
  3. rechercher si une valeur existe dans une table
    Par Tierisa dans le forum VBA Access
    Réponses: 10
    Dernier message: 20/11/2008, 08h58
  4. Recherche d'une valeur présent dans une table mais pas dans une autre
    Par bossLINDROS dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 19/06/2008, 15h12
  5. recherche de la valeur maximum dans une série de cellules
    Par Lechette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/04/2008, 08h33

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