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 :

Macro pour check données et format + génération TXT (tab separator)


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
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2011
    Messages : 14
    Par défaut Macro pour check données et format + génération TXT (tab separator)
    Bonjour,

    Je me rends compte que je n'ai pas toutes les compétences requises à ce que je veux mettre en place, aprés trois jours de galère, je fais appel à vous.

    Mon objectif de macro est le suivant :

    Dans mon fichier excel (un template), l'utilisateur copie un certain nombre de données.
    Dans les autres onglets se trouvent des tables de référence.

    1- La macro défini la dernière ligne du tableau présent dans Feuil1

    2 - La macro néttoie les valeurs : suppression des " " et "." avant et aprés les valeurs saisies, remplacement des " " par des " " dans les valeurs.

    3- La macro force le format de toutes les cellules en Texte.

    4 - la macro vérifie que les champs des colonnes à en-têtes verts sont bien remplis (pas de " " ou " " ou "." sinon, cellule colorée rouge), que les valeurs saisies correspondent aux valeurs présentes dans la table de référence associée (dans un autre onglet) sinon, cellule colorée rouge.

    5- La macro vérifie que les valeurs présentes dans la colonne bzu sont correctes par rapport à la valeur de la colonne1. Table de référence val/bzu dans l'onglet bzu. Si les valeur ne correspondent pas, cellule de la colonne bzu colorée en rouge.

    6 - La macro vérifie que les valeurs de la colonne date (si elles sont présentes, pas obligatoires) sont bien au format DD/MM/YYYY (sinon, cellule colorée en rouge).

    7 - Dans la colonne 6, le format doit être le suivant : 145.45
    Le point est le séparateur, avec deux décimales aprés le point.
    Si la valeur saisie ne se termine pas par ".00", colorer la cellule en gris.

    8 - Les valeurs des cellules de la colonne5 ne doivent pas faire plus de 25 caractères, sinon cellule colorée grise.

    9 - Si par chance, aucune cellule n'avait été colorée, supprimer toutes les lignes qui se trouvent en dessous du tableau (par sécurité) et générer un fichier txt (tab delimited text) dans un dossier donné.

    J'ai pas mal d'idées, j'ai essayer de tourner mon algo dans tous les sens mais je suis définitivement mauvais...ou pas logique.

    Merci de votre aide !

    Jacques
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Je n'ai pas encore regardé ton fichier, mais j'ai une première remarque. Pourquoi tu passes par un format texte ? Pour les nombres, il est plus logique que l'utilisateur rentres naturellement un nombre en utilisant le séparateur de décimal habituel de son PC et tu peux le mettre au format que tu souhaites avant de le transformer en TXT. Pareil pour les dates, ça va être un casse tête si tu veux forcer un format prédéfini. Au pire tu mets la colonnes dans un format avec le mois en texte pour qu'il puisse se rendre compte s'il a inversé mois et jour.

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2011
    Messages : 14
    Par défaut
    Bonjour Zebreloup,

    En fait, tout ceci est dans le but d'importer les donner dans une base oracle.
    J'ai donc des impératifs de mise en forme.

    J'ai testé le truc dans tous les sens, si les cellules ne sont pas au format texte à la base, c'est la mouise...

    Pour "démystifier" mon projet, je propose de vraiment le décortiquer, en procédant par étapes simples.

    1 - trouver la dernière ligne de mon tableau ?

    Qui saura, qui sauraaaaa, qui sauraaaaaaaaaaaa...

    J'ai réussi à trouver mon n° de derniere ligne !!!
    J'ai aussi réussi à virer ces conneries d'espaces avant et aprés !!!

    Savez vous comment :

    - virer les "doubles espaces" présents dans les expressions ?

    - verifier si cell.value se trouve bien dans un tableau d'un autre onglet ?

    Merci !

  4. #4
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Edit : Je suis un peu en retard pour la première question mais quand même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim ws As Worksheet
    Set ws = Worksheets("ma feuille")
     
    Dim lastRow As Long
    lastRow = ws.UsedRange.Rows.Count
    Pour l'histoire du format texte, il suffit ensuite d'utiliser la fonction Format en VBA.

    Pour le remplacement, si monRange a été défini auparavant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    monRange.Replace What:="  ", Replacement:=" ", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Pour l'autre point, de même que tu as RECHERCHEV ou EQUIV en formules, tu as en VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WorksheetFunction.VLookUp(...)
    WorksheetFunction.Match(...)

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2011
    Messages : 14
    Par défaut
    Merci beaucoup !

    Autre question, comment ecrire mon test vlookup en faisant référence à Worksheets(Manufacturers).Range("D58: D434") par exemple ?

    J'ai systématiquement l'erreur "Subscript out of range" ??!

  6. #6
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Il manquait peut-être les guillemets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Manufacturers").Range("D58:D434")

Discussions similaires

  1. [XL-2007] Macro pour extraire donné statistique
    Par hypothese dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/06/2014, 13h54
  2. [XL-2003] Macro pour reporter données d'une feuille "Data" vers cellules de x onglets
    Par Lamperti dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 09/07/2013, 11h16
  3. Macro pour copier données excel vers Word
    Par plimosin dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 15/11/2012, 08h10
  4. Réponses: 0
    Dernier message: 23/03/2012, 09h59
  5. Réponses: 8
    Dernier message: 10/02/2007, 02h44

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