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 :

VBA : traitement via une liste de données [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Mars 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2014
    Messages : 17
    Par défaut VBA : traitement via une liste de données
    Bonjour,

    J’ai un petit problème de noms tronqués dans un tableau Excel, je m’explique :

    En amont, Je réalise plusieurs traitements qui ont pour finalités de me donner un fichier de données du type :

    Fichier 1.xlsx

                A                  B
    
    1   Nom                  Valeurs
    2 YAN                       1
    3 PAU                     30
    4 DIDI                     15
    5 etc....
    J’ai simplifié mon exemple !

    Le problème, c’est que les traitements ont tronqués les noms (limite de 31 caractères : nom onglets Excel --> récup des nom d'onglet et création du tableau).
    Du coup PAUL devient PAU, YANN devient YAN etc….

    J’ai une base de données à coté qui me permettrait de renommer ces données.

    Source.xlsx

                A                  B
    
    1      Index               Nom
    2       1                    PAU                   
    3       3                    YAN                     
    4       7                    DIDI                     
    5       8                    etc....
    Je souhaiterais savoir s’il est possible de réaliser une macro sous VBA pour automatiser le traitement afin d’obtenir un tableau final qui reprendrait les données suivantes pour un résultat comme ci-dessous :

    Fichier 2.xlsx

                A                  B                   C
    
    1      Index               Nom             Valeurs
    2       1                    PAUL                 1   
    3       3                    YANN                30   
    4       7                    DIDIER              15  
    5       8                    etc....
    Pour finir, il faut savoir que le fichier 1.xlsx peut avoir un nombre de ligne variable.

    D’avance merci pour votre aide.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Oui, c'est peut-être possible. Qu'est-ce que tu fais en cas de doublon sur les noms YAN pour YANN et YANNICK par exemple. Où est-ce que tu prends la donnée "Valeurs" ? Quel est ton niveau de connaissances VBA ?

  3. #3
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Mars 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2014
    Messages : 17
    Par défaut Dttpedt
    Bonjour Daniel,

    Je suis débutant en vba je sais adapter une macro à mes besoins.

    En principe il n'y a pas de doublons sinon c'est une erreur que je peux voir rapidement et corriger.

    Les données Valeurs sont dans le 1er fichier comme ci-dessous : elles sont liées au nom.


    Nom : fichier 1.jpg
Affichages : 122
Taille : 10,2 Ko

    Merci de ton aide.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Fournis au moins un fichier, pas une image avec la correspondance entre les noms abrégés et les noms entiers.

  5. #5
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Mars 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2014
    Messages : 17
    Par défaut
    Oui désolé, en effet c'est plus pratique.

    voilà.

    Source.xlsx
    Fichier 1.xlsx
    Fichier 2.xlsx

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Mets cette macro dans un module standard.

    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
    Sub test()
        Dim Sh1 As Worksheet, Sh2 As Worksheet, Plage As Range, C As Range
        Dim Ligne As Long, Plage2 As Range, X As Range
        Ligne = 1
        Set Sh1 = Workbooks("Fichier 1.xlsx").Sheets("Feuil1")
        Set Sh2 = Workbooks("Source.xlsx").Sheets("Feuil1")
        With Sh1
            Set Plage = .Range(.[A2], .Cells(.Rows.Count, 1).End(xlUp))
        End With
        With Sh2
            Set Plage2 = .Range(.[B2], .Cells(.Rows.Count, 2).End(xlUp))
        End With
        With ThisWorkbook.Sheets("Feuil1")
            .[A1:C1].Value = Array("Index", "Nom", "Valeurs")
            For Each C In Plage
                For Each X In Plage2
                    If InStr(1, X.Value, C.Value) = 1 Then
                        Ligne = Ligne + 1
                        .Cells(Ligne, 1).Value = X.Offset(, -1).Value
                        .Cells(Ligne, 2).Value = X.Value
                        lig = Application.Match(X.Value, Sh2.[B:B], 0)
                        .Cells(Ligne, 3).Value = Application.Index(Sh2.[A:A], lig, 1)
                        Exit For
                    End If
                Next X
            Next C
        End With
    End Sub

  7. #7
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Mars 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2014
    Messages : 17
    Par défaut
    Daniel,

    Ça marche nickel !

    Merci de ton aide.

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

Discussions similaires

  1. [XL-2010] VBA : traitement via une liste de données suite
    Par dttpedt dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/03/2014, 14h46
  2. [VBA-E] Selectionner un graphique via une liste déroulante
    Par lapa-jh dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/05/2007, 21h26
  3. Réponses: 1
    Dernier message: 09/03/2007, 07h52
  4. Réponses: 15
    Dernier message: 21/11/2006, 10h13
  5. récupération des données via une liste déroulante
    Par rahan_dave dans le forum Access
    Réponses: 1
    Dernier message: 13/10/2005, 12h27

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