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 :

Récupération de données et mise en forme


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Par défaut Récupération de données et mise en forme
    Bonjour,

    Je cherche à réaliser un code VBA qui me permettra de récupérer des données sur un colonne d'un fichier Excel puis de créer un onglet où je vais classer ces données en 2 colonnes dont la 1ère correspondra à la une donnée et la 2ème sa fréquence associée.

    En pièce jointe la feuille 1 représente les données à récupérer et la feuille 2 représente le résultat de ma macro.

    Merci pour votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Ramio, bonjour le forum,

    Tu dis : dont la 1ère correspondra à la une donnée et la 2ème sa fréquence associée. et dans l'exemple c'est le contraire... J'ai fait comme dans l'exemple, tu adapteras :
    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 Macro1()
    Dim OS As Object 'déclare la variable OS (Onglet Source)
    Dim OD As Object 'déclare la variable OD (Onglet Destination)
    Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
    Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
    Dim D As Object 'déclare la variable D (Dictionnaire)
    Dim I As Integer 'déclare la variable I (Incrément)
    Dim TOU As Variant 'déclare la variable TOU (Tableau des Occurrences Uniques)
    Dim TNO As Variant 'déclare la variable TNO (Tableau des Nombre d'Occurrences)
     
    Set OS = Sheets("Feuil1") 'définit l'onglet source OS
    Sheets.Add after:=Sheets(Sheets.Count) 'ajoute un nouvel onglet en dernière position
    Set OD = ActiveSheet 'définit l'onglet destination OD
    DL = OS.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A) de l'onglet source OS
    TC = OS.Range("A2:A" & DL) 'définit le tableau de cellules TC
    Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
    For I = 1 To UBound(TC) 'boucle sur toutes les cellules du tableau de cellules TC
        D(TC(I, 1)) = D(TC(I, 1)) + 1 'alimente le dictionnaire D
    Next I 'prochaine cellule de la boucle
    TOU = D.keys 'définit le tableau des occurrences unique TOU avec la liste du dictionnaire D sans doublon
    TNO = D.Items 'définit le tableau du nombre d'occurrences trouvées TNO pour chaque occurrence
    OD.Range("A1").Value = "FRÉQUENCE" 'écrit "FRÉQUENCE" en A1 de l'onglet OD
    OD.Range("B1").Value = "DONNÉE" 'écrit "DONNÉE" en B1 de l'onglet OD
    OD.Range("A2").Resize(D.Count) = Application.Transpose(TNO) 'récupère le tableau TNO dans la colonne A à partie de A2
    OD.Range("B2").Resize(D.Count) = Application.Transpose(TOU) 'récupère le tableau TOU dans la colonne B à partie de B2
    End Sub

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Par défaut
    Bonjour Thautheme,

    Merci pour ton aide. Je vais exécuter et adapter le code et je te ferais signe si tout cela fonctionne.

    Encore merci

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Par défaut
    Rebonjour Thautheme,

    Juste pour te dire que je viens d'exécuter le code et c'est parfait!

    A une exception près : certaines cases dans ma colonne de mon fichier "source" sont vide. Avec cette macro, il prend en compte les cases vides et définit leur fréquence. (voir photos jointes). Qu'est ce que je pourrais rajouter à la macro pour qu'il ne tienne pas compte de ces cases vides?

    Je suis très novice donc mes questions peuvent paraître un peu bête

    Enfin j'aurais une autre question qui n'a rien à voir (peut être que je devrais la poser dans un autre topic) :

    Avec les nouveaux onglets que j'ai créés (car plusieurs fichiers sources), je veux créer des formules dans un onglet tierce qui reprendront les valeurs fréquences et données et qui seront de ce type :

    onglet créé 1 : OD1 ==> sheets("feuilleFormule").Cells(2,2).FormulaR1C1 = "=RiskDiscrete({Donnée1,Donnée2,Donnée3,.....,DonnéeX},{Freq1,Freq2,Freq3,.....FreqX})"

    onglet créé 2 : OD2 ==> sheets("feuilleFormule").Cells(2,2).FormulaR1C1 = "=RiskDiscrete({Donnée1,Donnée2,Donnée3,.....,DonnéeY},{Freq1,Freq2,Freq3,...FreqY})"


    Donc ma question serait quelle macro pour intégrer toutes les données et fréquences dans ma formule tout en faisant référence au bon onglet.

    Merci

    J'avais oublié les photos!
    Images attachées Images attachées   

  5. #5
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonsoir Ramio, bonsoir le forum,

    Il n'y a pas de question bête Ramio...
    Pour ton problème, remplace la ligne 18 du code que je t'ai proposé par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If TC(I, 1) <> "" Then D(TC(I, 1)) = D(TC(I, 1)) + 1 'alimente le dictionnaire D
    Pour la seconde question j'avoue que je n'ai rien compris avec cette histoire d'onglet tierce...

  6. #6
    Membre habitué
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Par défaut
    Merci pour la 1ère question!

    Concernant la 2ème, par onglet tierce je voulais dire "écrire sur une nouvelle feuille appelée <feuilleFormule> " les formules citées précédemment.

    Thanks Thautheme!

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

Discussions similaires

  1. [XL-2003] Exportation données ET mise en forme via ADO
    Par gbbtt dans le forum Excel
    Réponses: 6
    Dernier message: 13/04/2012, 08h31
  2. récupération infos système et mise en forme dans un mail
    Par Baldric de Dol dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 16/04/2008, 09h09
  3. Réponses: 1
    Dernier message: 25/06/2007, 21h10
  4. [Débutant] Récupération de données et affichage sous forme de tableau
    Par Samrenfou dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 17/04/2007, 10h18
  5. [VBA-E]Récupération de données pour mise à jour !
    Par gantec dans le forum Macros et VBA Excel
    Réponses: 29
    Dernier message: 13/03/2007, 12h06

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