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 :

modifier des formats de cellule et remplacer des . par , dans un fichier excel via access


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Points : 216
    Points
    216
    Par défaut modifier des formats de cellule et remplacer des . par , dans un fichier excel via access
    Bonjour,
    Je n'arrive pas à effectuer correctement cette macro et pouvez vous m'aider :
    Dans un formulaire Access en cliquant sur un bouton, je désirerai que les cellules se trouvant dans les colonnes de CK à DS d'un fichier Excel passe au format texte et que les "." se trouvant dans ces cellules se transforme en ","
    Voici le code que j'ai commencé (inspiré des différents exemples trouvés) mais qui ne marche pas.
    l'erreur est : l'indice n'appartient pas a la sélection

    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
    Private Sub Commande66_Click()
     
        Dim xlApp As Excel.Application
        Dim xlSheet As Excel.Worksheet
        Dim xlBook As Excel.Workbook
     
            'chemin adresse 
    Chemin = Application.CurrentProject.Path & "\arrété\"
    'fichier excel recepteur
    FichierExcel = "surface_demande_bilantest.xlsx"
    'chemin fichier excel
    CheminFichierExcel = Chemin & FichierExcel
     
         ' Initialiser les variables
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = xlApp.Workbooks.Open(CheminFichierExcel) 
     
     XlBook.Sheets(“Re_Table_PourFusion_temp”).Columns("CK:DS").Select
     
      Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Selection.NumberFormat = "@"
     
        ' Code de fermeture
        xlBook.Save
        xlApp.Quit
        Set xlSheet = Nothing
        Set xlBook = Nothing
        Set xlApp = Nothing
     
    End Sub
    Merci pour votre aide

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour,

    J'ajouterai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set xlApp = CreateObject("Excel.Application") :xlapp.visible=true
    Set xlBook = xlApp.Workbooks.Open(CheminFichierExcel) :xlBook.activate
    XlBook.Sheets(“Re_Table_PourFusion_temp”).activate
    Cela va te permettre de voir ce qui se passe.

    Et vérifie que le nom de la feuille est le bon.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Je ne vois pas l'intérêt de passer au format texte et de convertir les "." en ","; alors qu'en format numérique les "." deviennent de ",".

    activesheet.usedrange= activesheet.usedrange.value.

    Ainsi tu récupères tes valeurs avec ","

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Points : 216
    Points
    216
    Par défaut
    Merci beaucoup pour vos réponse. Ca marche.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par dodo28 Voir le message
    Merci beaucoup pour vos réponse. Ca marche.
    bonjour,
    j'en suis ravi mais qu'est-ce qui marche?

    donnes la solution que tu as retenu pour les autres internautes!

    n'oublis pas que certains problèmes peuvent être récurent et que d'autres peuvent s'intéresser à ta solution!

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Points : 216
    Points
    216
    Par défaut
    Je suis désolé pour le retard je n'avais pas vu la réponse toutes mes excuses.
    En faite ca marche une fois sur deux, et j'ai du mal à comprendre pourquoi?
    quand j'appelle le code une première fois ca ne marche pas erreur d'exécution 91 variable objet non définie. je referme le fichier Excel ouvert et je débugue.
    Et si je recommence ca marche, une fois sur deux.
    la méthode avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.UsedRange = ActiveSheet.UsedRange.Value
    ne marche pas .

    l'erreur est sur cette partie du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
          'remplace les . par les , dans la selection
         Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
                SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                ReplaceFormat:=False
    Et voici mon code en entier :
    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
    61
    62
    63
    Sub GestionFormatExcel()
     
    'modifie le format et change . en , aprés l'export excel dans le fichier excel de reception pour faire arrété gg
     
        Dim xlApp As Excel.Application
        Dim xlSheet As Excel.Worksheet
        Dim xlBook As Excel.Workbook
     
        Dim Chemin As String
        Dim FichierExcel As String
        Dim CheminFichierExcel As String
     
        'chemin adresse pas possible avec portable
    Chemin = Application.CurrentProject.Path & "\arrété\"
    'fichier excel recepteur
    FichierExcel = "surface_demande_bilan.xlsx"
    'chemin fichier excel
    CheminFichierExcel = Chemin & FichierExcel
     
         ' Initialiser les variables
        Set xlApp = CreateObject("Excel.Application"): xlApp.Visible = True
        Set xlBook = xlApp.Workbooks.Open(CheminFichierExcel): xlBook.Activate
     
     
    With xlBook.Sheets(1)
     
            .Activate
     
            .Columns("CK:DS").Select
     
            'gestion de l'erreur si deja au format
            On Error GoTo ErreurFormat
     
            'met en format texte la selection
            Selection.NumberFormat = "@"
     
    ErreurFormat:
     
        'MsgBox ("erreurforma")
     
            On Error GoTo ErreurRemplace
     
          'remplace les . par les , dans la selection
         Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
                SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                ReplaceFormat:=False
     
     
    ErreurRemplace:
     
        'MsgBox ("erreurremplace")
     
     
    End With
     
        ' Code de fermeture
        xlBook.Save
        xlApp.Quit
        Set xlSheet = Nothing
        Set xlBook = Nothing
        Set xlApp = Nothing
     
    End Sub
    Merci beaucoup

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    n'utilises pas des select, selection et autre activate!

    mais des objets et décline l'arborescence de l'objet.

    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
    Sub GestionFormatExcel()
     
    'modifie le format et change . en , aprés l'export excel dans le fichier excel de reception pour faire arrété gg
     
        Dim xlApp As Excel.Application
        Dim xlSheet As Excel.Worksheet
        Dim xlBook As Excel.Workbook
     
        Dim Chemin As String
        Dim FichierExcel As String
        Dim CheminFichierExcel As String
     
        'chemin adresse pas possible avec portable
    Chemin = Application.CurrentProject.Path & "\arrété\"
    'fichier excel recepteur
    FichierExcel = "surface_demande_bilan.xlsx"
    'chemin fichier excel
    CheminFichierExcel = Chemin & FichierExcel
     
         ' Initialiser les variables
        Set xlApp = CreateObject("Excel.Application"): xlApp.Visible = True
        Set xlBook = xlApp.Workbooks.Open(CheminFichierExcel): xlBook.Activate
     
      On Error GoTo ErreurFormat
     Dim R As Range
    Set R = xlBook.Sheets(1).Columns("CK:DS")
     R.NumberFormat = "@"
    ErreurFormat:
     
        'MsgBox ("erreurforma")
     
            On Error GoTo ErreurRemplace
     
          'remplace les . par les , dans la selection
         R.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
                SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                ReplaceFormat:=False
     
     
    ErreurRemplace:
     
        'MsgBox ("erreurremplace")
     
     
    End With
     
        ' Code de fermeture
        xlBook.Save
        xlApp.Quit
        Set xlSheet = Nothing
        Set xlBook = Nothing
        Set xlApp = Nothing
     
    End Sub

  8. #8
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Points : 216
    Points
    216
    Par défaut
    merci beaucoup votre solution enlève le bug.
    Bonne soirée

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/12/2012, 09h47
  2. [XL-2003] Créer des formats de cellules personnalisés à partir de valeurs de cellules
    Par lcaude dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/05/2011, 09h43
  3. Réponses: 0
    Dernier message: 17/03/2011, 21h42
  4. Réponses: 6
    Dernier message: 15/02/2008, 11h10
  5. remplacement carré par ; dans un fichier excel crée par une macro
    Par om51ft dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/11/2007, 16h00

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