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 :

Formatage de cellule en VBA [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2008
    Messages : 152
    Points : 110
    Points
    110
    Par défaut Formatage de cellule en VBA
    Bonjour

    Etant plus "spécialiste" de VBA pour Access, j'ai un petit (ou gros ) souci.

    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
    Set oDb = CurrentDb
       Set rst = oDb.OpenRecordset("TResultats")
       Set Appexcel = CreateObject("Excel.Application")        ' Ouvre Objet Excel
       Appexcel.Visible = False
       Set Wbexcel = Appexcel.Workbooks.Open("C:\JDB.xls")     ' Ouvre fichier Excel
       Appexcel.sheets("Export").Select                        ' Pointe sur la feuille Export
       Appexcel.Application.Calculation = xlCalculationManual  ' Pas de calculs pendant l'acquisition (Durée !)
       i = 1
       For Each fld In rst.Fields                             ' Recupere le nom des champs
         Appexcel.Cells(i, 1) = fld.Name                      ' Export dans Excel
         i = i + 1
       Next fld
       i = 1
       j = 2
       If Not rst.EOF Then                                    ' boucle de lexture table   Resultats
         rst.MoveFirst                                        ' Pointe sur le premier jour
         While Not rst.EOF                                    ' Export données dans Excel
            For Each fld In rst.Fields
              If j <= JourRef Then                            ' Si données valides
                Appexcel.Cells(i, j) = fld
              Else
                Appexcel.Cells(i, j) = 0                      ' Jour non écoulé dans le mois
              End If
              i = i + 1
            Next fld
           rst.MoveNext                                        ' Jour suivant
           j = j + 1                                           ' Colonne suivante
           i = 1
           VStep = j - 1
           CptJour.Value = VStep
           Repaint
         Wend 
      End If
       Appexcel.Application.Calculation = xlCalculationAutomatic           ' Retablir les calculs automatiques
       Appexcel.Cells(2, 35) = JourRef                         ' Recupere jour export dans Excel
       Appexcel.Cells(3, 35) = MoisRef                         ' Recupere mois export dans Excel
       Appexcel.Cells(4, 35) = AnneeRef                        ' Recupere annee export dans Excel
       Appexcel.Run.Calculs                                    ' Generation JDB
       Wbexcel.Save                                            ' Sauvegarde/ferme/Quitte Excel
       Wbexcel.Close
       Appexcel.Quit
       Set Wbexcel = Nothing                                   ' Liberation des Objets
       Set Appexcel = Nothing
       Set rst = Nothing                                       ' Libère les objets
       Set oDb = Nothing]
    Dans le code ci-dessus (qui est dans Access) j'importe les données d'une table créé par une requete creation table (TResultats).
    La boucle While me remplie parfaitement les lignes et colonnes de la feuille Excel. Mon probléme est un probléme de format. La table Access qui récupere ces données de nombreux fichiers textes de temps en temps importe les valeur numerique sous la forme standart exemple : 0035210 et non 35210. Il est bien evident que avec 0035210 dans une cellule, il m'est difficile de faire des calculs derrieres
    Si quelqu'un peut me lancer un bouée de sauvetage car là je suis bloqué. Merci d'avance

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        If IsNumeric(fld) Then
            Appexcel.Cells(i, j) = CDbl(fld)
        Else
            Appexcel.Cells(i, j) = fld
        End If
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2008
    Messages : 152
    Points : 110
    Points
    110
    Par défaut
    Bonjour

    Merci pour la fonction IsNumeric que je ne connaissais pas. Trés bon tuyau sauf qu'il est impossible de transtyper la variable fld qui est un objet Field.
    Je suis donc passé par un variable intermédiaire de type Variant (VInter) et cela marche !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    While Not rst.EOF                                     ' Export données dans Excel
            For Each fld In rst.Fields
              VInter = fld.Value
              If Left(VInter, 2) = "--" Then VInter = 0
              If IsNumeric(VInter) Then
                VInter = CDbl(VInter)                          ' C'est un chiffre en chaine
              End If
              If j <= JourRef Then                             ' Si données valides
                 Appexcel.Cells(i, j) = VInter          Else
                 Appexcel.Cells(i, j) = 0                       ' Jour non écoulé dans le mois
              End If
              i = i + 1
            Next fld
           rst.MoveNext
    1000 fois merci pour le tuyau

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

Discussions similaires

  1. Formater une cellule en VBA pour recevoir une date
    Par *.Har(d)t dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/05/2007, 17h39
  2. Activer Cellule avec VBA
    Par jmarcB dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/01/2007, 16h43
  3. Problème de formatage de cellule par VBA
    Par ppe52 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/12/2006, 12h12
  4. [PowerBuilder] Formatage de cellule Excel
    Par Deedoo2000 dans le forum Powerbuilder
    Réponses: 1
    Dernier message: 04/08/2006, 15h31
  5. [PowerBuilder] Excel - Formatage de cellule via OLE
    Par moussmouss dans le forum Powerbuilder
    Réponses: 3
    Dernier message: 17/07/2006, 16h11

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