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 :

Nettoyer des exports [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2013
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Février 2013
    Messages : 155
    Par défaut Nettoyer des exports
    Bonjour,

    Je souhaite constituer une base de code de télécommandes universelles. Les données exportées sont sous une mauvaise forme sur excel. Je ne peux pas les traiter de cette façon.

    J'aimerais avoir une colonne marque, une colonne famille et une colonne code de cette façon :

    Marque Type Code
    ACCESS MEDIA SAT 4505
    ACCESS MEDIA SAT 4441
    ACCESS MEDIA DTT 4505

    Au lieu de (dans une seule colonne, sur deux lignes) :

    ACCESS MEDIA SAT 4505 4441
    DTT 4505

    J'ai pensé à des fonctions telles que droite, gauche, stxt, trouve, chercher, mais malgré la combinaison de ces dernières je n'arrive pas à avoir un résultat propre. Avez - vous des idées??

    Je joins mon fichiers excel.

    Merci d'avance.

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 566
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 566
    Par défaut
    Bonjour

    Puisque tu as 2013 je conseillerais de combiner concaténation et flash fill :
    • une formule
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      =SI(NBCAR(A2)<9;A1&" "&A2;SI(NBCAR(A1)>9;A1;""))
      dans la colonne B semble fonctionner (à quelques exceptions près)
    • après vérif et correction des quelques anomalies, copier, collage spécial valeur de la colonne sur elle même ou en C si tu veux garder une possibilité de modifier
    • un tri sur la base de cette colonne
    • utilisation du flash fill : tu saisis les données de 2 ou 3 lignes dans les colonnes qui vont bien : en principe Excel comprend la logique et tout va se remplir en auto

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2013
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Février 2013
    Messages : 155
    Par défaut
    Salut Chris,

    Merci beaucoup pour ta réponse.

    Je viens d'essayer, cependant, les "exceptions" dont tu parles sont nombreuses surtout que le fichier que j'ai joint comporte bien moins d'enregistrements que l'original. Je vais donc y passer trop de temps je pense...

    Sauf si tu as une autre solution, n'existerait il pas une méthode en VBA?

  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,

    un code VBA est le résultat d'une pensée construite & logique, cela ne sort pas tout seul d'un chapeau !

    Donc déjà, tu peux le faire en manipulant tes cellules en utilisant l'Enregistreur de macros,
    te donnant ainsi une base de code que tu pourras publier ici.

    Pour rappel, c'est un forum de programmeurs, pas de j'y viens passer une commande !

    Au moins, si tu prenais la peine d'expliquer chacun de tes cas entre situation de départ et résultat désiré, ce serait plus clair !

    Ne pas oublier non plus que certains ne sont pas en mesure d'ouvrir les pièces jointes par mesure évidente de sécurité …

  5. #5
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 566
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 566
    Par défaut
    Bonjour

    Je plussois à la réponse de Marc_L : que ce soit par formule ou VBA, Il faut trouver une logique. Le mienne est basée sur 9 caractères et, effectivement, elle ne marche pas à 100%.

    A partir de là la question est : qu'est-ce qui te permet de savoir que cela ne marche pas dans tel ou tel cas et quelles sont les solutions alternatives ?

    Si elle existent on peut effectivement les coder en formule ou en VBA sinon...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2013
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Février 2013
    Messages : 155
    Par défaut
    Merci pour le recadrage ! ^^

    Il y a évidemment plusieurs cas qui ne font pas bon ménage:

    les cas du plus simple au plus difficile à gérer:

    La marque, le type et le code dans la même cellule :

    Exemple: ACER TV 3230

    La marque, le type et les codes dans la même cellule :

    Exemple: ACER TV 3230 4520

    La marque, le type et les codes dans 2 cellules les unes sur les autres 1)
    Exemple: ACER TV 3230 4520
    2568 9865 2665

    La marque, le type et les codes dans 2 cellules les unes sur les autres 2)
    Exemple: ACER TV 3230 4520
    SAT 2568 9865 (SAT est un type)

    La marque, le type et les codes dans plusieurs cellules les unes sur les autres :
    Exemple: ACOUSTIC
    SOLUTIONS
    TV 2568 9865 2665
    DVD 2563 5874

    Voila les différents cas qui peuvent apparaître.

    Je veux que le dernier exemple soit réécris sous la forme:

    ACOUSTIC SOLUTIONS TV 2568
    ACOUSTIC SOLUTIONS TV 9865
    ACOUSTIC SOLUTIONS TV 2665
    ACOUSTIC SOLUTIONS DVD 2563
    ACOUSTIC SOLUTIONS DVD 5874

    Cependant, les cas sont tellement différents que je ne sais pas du tout d'où partir en VBA

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

Discussions similaires

  1. [10][Java] Formatage des exports Excel
    Par coldec dans le forum SDK
    Réponses: 2
    Dernier message: 12/09/2008, 13h30
  2. script pour nettoyer des lecteurs réseaux
    Par ko0nz dans le forum VBScript
    Réponses: 1
    Dernier message: 06/02/2008, 17h13
  3. Regex pour nettoyer des requêtes SQL
    Par gaboo_bl dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 26/03/2007, 12h03
  4. Enchainer des exports: Ou chercher?
    Par sk8bcn dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 02/02/2007, 10h30
  5. un batch DOS pour "nettoyer des fichiers" ?
    Par RoroMinator dans le forum Scripts/Batch
    Réponses: 9
    Dernier message: 12/02/2004, 16h24

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