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 :

Lire un fichier Excel pour modifier les valeurs des cellules


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Points : 79
    Points
    79
    Par défaut Lire un fichier Excel pour modifier les valeurs des cellules
    Bonjour,

    Ci-joint mon projet Excel.

    Je développe un outil spécial pour CATIA.
    J'aurais besoin sous Excel de modifier des valeurs contenues dans des cellules.

    En fait, les utilisateurs préparent un fichier Excel qui contienne des noms de fichier incomplet, pour accélérer leur job (soit disant, bref ....).

    Un bouton "Export in Csv File format" permet d'exporter son contenu en .csv.
    Ce fichier sera traité (lu) par l'outil CATIA (sous visual basic).

    J'ai commencé à créer une fonction qui fait la modification des noms de fichiers.
    J'aimerais savoir comment traiter le tableau cellule par cellule sur les colonnes A et B uniquement jusqu'au mot stop. Le mot stop est supprimé de la cellule, puis l'export en .csv se fait.

    Pouvez-vous m'aider à compléter cet outil?
    Comment appeler la fonction renameFile?
    Vous semble-t-elle juste?
    Peux-t-on une fois ce traitement fini cacher ce qui se passe à l'écran et laisser voir à l'utilisateur un fichier Excel qui n'a pas était touché?

    Merci pour votre aide.
    Pendant ce temps je vais essayer de finir l'outil, on ne sait jamais.
    Bien à vous.
    Paloma
    Cordialement,
    Paloma



    Pensez au

  2. #2
    RLX
    RLX est déconnecté
    Membre du Club Avatar de RLX
    Inscrit en
    Octobre 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 51
    Points : 61
    Points
    61
    Par défaut
    Salut Paloma,

    Ta fonction RenameFile est définie comme private tu ne pourra l'appeler que dans le module Filter il faut que tu la déclare en Public, ensuite cette fonction à des paramètre il faut donc lui en fournir quand tu l'appelle. En plus c'est une fonction qui renvoie une valeur donc il lui faut une variable pour receptionner la valeur de retour.(Un string pour RenameFile)


    Pour cacher ce qui ce passe à l'écran il y a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = False
    ne pas oublier de le remettre à True à la fin du traitement.
    Pour résoudre un problème le plus dur n'est pas de trouver la solution, c'est de trouver celui qui la connait !!!!

  3. #3
    Membre régulier Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Points : 79
    Points
    79
    Par défaut Ok merci ;-)
    En fait j'en suis là ...

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    '***************************************
    ' CATIA File Name filter
    '
    ' created by pdubernet
    '
    '
    ' please contact your administrator or
    ' pdubernet@assystem.com
    '***************************************
     
    'Variable qui prend en entrée les valeurs (A1, B1 / A2, B2 / ...An, Bn)
    Dim strNameOld As String
    Sub ExcelProgress()
        For i = 0 To i = "stop"
            text1 = ex.Range("i").Value
            strNameOld = i
        Next i
    End Sub
     
    'Fonction qui permet de renommer les fichiers CATIA pour compléter leurs noms
     
    'Prends en paramètre une chaîne.
    Public Function renameFile(strNameOld As String) As String
        Dim strCharTemp As String
     
        'Si le fichier ne contient pas de caractère à la position 10 c'est un arbre plan CATProduct
         If Mid(strCharTemp, 10, 1) = "" Then
            strCharTemp = Left(strCharTemp, 9) + ".CATProduct"
          End If
     
        'Si le fichier contient 0 en position 10 et rien en position 15 c'est un CATProduct
        If Mid(strCharTemp, 10, 1) = "0" And Mid(styrCharTemp, 15, 1) = "" Then
            strCharTemp = Left(strCharTemp, 14) + ".CATProduct"
          End If
     
        'Si le fichier contient "-STD01" on obtient un CATPart
        If Mid(strCharTemp, 15, 6) = "-STD01" Then
            strCharTemp = Left(strCharTemp, 20) + ".CATPart"
          End If
     
        'Si le fichier contient 2 en position 10 c'est un CATPart
        If Mid(strCharTemp, 10, 1) = "2" Then
            strCharTemp = Left(strCharTemp, 14) + ".CATPart"
          End If
     
        'Si le fichier contient "-" en position 10 on obtient un CATDrawing
        If Mid(strCharTemp, 10, 1) = "-" Then
            strCharTemp = Left(strCharTemp, 12) + ".CATDrawing"
          End If
     
        'nettoyage du fichier Excel : Suppression du mot "stop" pour l'export en .csv
        'ce mot permet d'arrêter la fonction qui doit tourner dans la colonne A et B.
        If strNameOld = "stop" Then
            strNameOld = Null
          End If
     
    renameFile = strCharTemp
     
    End Function
    je vais prendre tes remarques en compte et essayer de faire tourner tout ça.

    Merci RLX
    Cordialement,
    Paloma



    Pensez au

  4. #4
    Membre régulier Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Points : 79
    Points
    79
    Par défaut pour Export Module
    c'est comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ' Export the document in cvs file format
    ' Macro recorded 28/10/2006 by Patrick DUBERNET
    '
    Public Sub MonMess()
    MsgBox "save document under CSV format(referenceFile.csv)", vbExclamation, "Export information message"
    Dim NameValue As String
    NameValue = Null
    Call renameFile((NameValue))
    With ActiveWorkbook
                Filename = .Path & "\referenceFile.csv"
                .SaveAs Filename, xlCSVWindows
    End With
    End Sub
    Je vais y arriver
    Enfin j'espère
    @ plus
    Paloma
    Cordialement,
    Paloma



    Pensez au

  5. #5
    RLX
    RLX est déconnecté
    Membre du Club Avatar de RLX
    Inscrit en
    Octobre 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 51
    Points : 61
    Points
    61
    Par défaut
    Dans ta boucle For tu utilise i comme un nombre mais tu lui dis de s'arreter losrqu'il a la valeur "stop", j'ai beau refaire mes calculs (mais je me suis arreté a 1.000.000.000) je n'arrive pas à stop en comptant de 1 en 1.

    Si tu veux parcourirs tes cellules jusqu'a stop tu peux procéder ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set ParcoursCells = Range("A5")
    While ParcoursCells <> "stop"
       ... Ton code ...
    Set ParcoursCells = ParcoursCells.offset(1,0)
    wend
    Et si tu ne veux pas avoir à utiliser le texte stop tu peux tester si la cellule est vide aussi (en suposant qu'il n'y a pas de cellule vide dans ta liste)
    Pour résoudre un problème le plus dur n'est pas de trouver la solution, c'est de trouver celui qui la connait !!!!

  6. #6
    Membre régulier Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Points : 79
    Points
    79
    Par défaut Je comprends plus ou moins ....
    Je vous remercie pour votre réactivité mais, je vous avoue que je me débrouille tout seul et personne ne peut m'aider. Donc, je suis ravie de trouver sur le net de telles connaissances qui m'aide tant.

    Merci encore pour toutes vos infos utiles, mais, j'ai du mal à voir comment je dois faire pour imbriquer ma fonction pour qu'elle s'exécute durant le parcours des cellules ???

    Vous trouverez ci-joint la mise à jour de ce fichier Excel.

    Bien à vous.
    Paloma

    Ah oui j'oublié, je ne peux considérer comme arrêt une cellule vide car les utilisateurs aimeraient faire des "sauts de ligne" pour la relecture de leur fichier.
    Cordialement,
    Paloma



    Pensez au

  7. #7
    RLX
    RLX est déconnecté
    Membre du Club Avatar de RLX
    Inscrit en
    Octobre 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 51
    Points : 61
    Points
    61
    Par défaut
    Ce qu'il faut que tu fasse c'est déjà savoir ce que tu veux faire en bon français sans utiliser de code pour l'instant et ensuite l'appliquer à ton code ça te permettra de savoir ou placer les partie de code

    Dans le code que je t'ai montrer, la boucle parcours les cellules une à une jusqu'à stop. Cette boucle te permet de pouvoir appeler ta fonction RenameFile avec le nom qu'il y a dans la cellule et le renommer.
    Pour résoudre un problème le plus dur n'est pas de trouver la solution, c'est de trouver celui qui la connait !!!!

  8. #8
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Citation Envoyé par Paloma
    Ah oui j'oublié, je ne peux considérer comme arrêt une cellule vide car les utilisateurs aimeraient faire des "sauts de ligne" pour la relecture de leur fichier.
    A ce moment la tu peux partir dans l'autre sens pour savoir ou s'arrete tes lignes complètes (je précise que je n'ai pas regardé ton fichier, ce que je vais faire de ce pas d'ailleurs )
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  9. #9
    Membre régulier Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Points : 79
    Points
    79
    Par défaut Merci à tous
    Super les gars pour vos informations ;-)

    J'ai fini et tout fonctionne ou presque lol

    Mon fichier .csv contient pour chaque ligne vide une ligne avec seulement le ";".

    Donc il ne me reste plus qu'a :

    soit éditer depuis Excel le fichier .csv et supprimer les lignes qui contiennent que des ";", mais chez po faire à l'heure d'aujourd'hui.
    soit je supprime les lignes vides jusqu'a stop directement dans Excel et je pense que ça ira plus vite

    Merci les amis.
    Paloma
    Cordialement,
    Paloma



    Pensez au

  10. #10
    Membre régulier Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Points : 79
    Points
    79
    Par défaut SOLUTION : Lire un fichier Excel pour modifier les valeurs des cellules
    Pour info, voici le fichier terminé.
    Ca aide de partager les sources.

    Amicalement,
    Paloma
    Cordialement,
    Paloma



    Pensez au

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/08/2012, 12h33
  2. [XL-2007] Trier fichiers excel pour supprimer les doublons
    Par El-Cherubin dans le forum Excel
    Réponses: 3
    Dernier message: 26/06/2009, 15h59
  3. Réponses: 2
    Dernier message: 15/09/2008, 23h12
  4. Réponses: 5
    Dernier message: 06/08/2008, 16h24
  5. Réponses: 20
    Dernier message: 23/03/2006, 16h21

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