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 cellules en VB et rafraichissement de graphique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 59
    Par défaut Formatage cellules en VB et rafraichissement de graphique
    Bonjour,
    N'étant pas expert dans le codage VB Excel je viens ici vous exposer mon problème que semblera peut-être simple pour vous mais sur lequel je bloque.

    Je souhaite générer un graphique via des données importées depuis une base Oracle.
    Le graphique est basé sur un onglet qui comporte les données importées après une simple requête SQL.
    J'ai défini 4 graphiques dans le même "objet graphique Excel" et je n'arrive pas à formater toutes les données comme il le faudrait.
    Après import dans l'onglet données, le graphique avec les numériques s'affiche correctement mais les autres ne se rafraichissent pas.
    J'ai essayé de formater manuellement les colonnes avant import et aussi via le code VB mais rien ne fonctionne.
    Par contre en "entrant dans les cellules" une par une, sous Windows via la touche F2 et Entrée (ou double clic sur la cellule et Entrée), là le format est appliqué à la cellule en question et le graphique prend en compte automatiquement le format de cette cellule.
    Le code généré par cette action ne m'avance pas plus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ActiveCell.FormulaR1C1 = "2:57:23 AM"
        wks.Range("$C$1").Select
    En gros il prend la valeur de la cellule lui ajouter " AM" et fait un select. J'ai donc ajouté dans le formatage manuel le " AM"/" PM" mais rien ne change.
    J'ai bien la solution de faire une boucle sur toutes les cellules concernées et de faire générer les actions touche " F2" et "Entrée" mais ce n'est pas vraiment propre ni performant...

    En pièces jointes le graphique avant ma manipulation sur les cellules, idem pour les données, et le résultat après.
    Je n'ai rien fais de plus que de faire "F2" et entrer machinalement sur une dizaine de cellules.

    Avez-vous une idée de l'action à faire, paramétrage ou code ?
    Merci
    Images attachées Images attachées    

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 194
    Par défaut
    Bonjour,

    si je comprend bien, le problème est que le format heure de la colonne c pose problème...

    Donc si ce n'est pas trop tard voici un début de solution:

    L'idée première, est d'utiliser la colonne H temporairement afin de reformater les données de la colonne C
    L'autre idée est de repartir non pas de la colonne C mais de la colonne B qui contient les dates ce qui pour excel est le plus stable
    Du coup pas de risque car le numéro de série portera aussi la date... je suis pas claire mais crois moi c'est mieux

    voila le truc :

    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
    Sub Demo()
        Dim DerniereLigne As Long, Maplage As Range
        Dim Mafeuille As Worksheet
        Application.ScreenUpdating = False
        Set Mafeuille = Worksheets("Feuil1") 'la feuille sur la quelle cela se passe
        With Mafeuille
            DerniereLigne = .Range("B" & Columns("B").Rows.Count).End(xlUp).Row 'recherche dernière valeur
            Set Maplage = .Range("H1:H" & DerniereLigne) 'on en profite pour définir la plage temporaire en colonne H
        End With
        With Maplage.Cells(1) 'sur la première cellule de la colonne temporaire
            .Formula = "=TIMEVALUE(IF(ISNONTEXT(B1)=TRUE,TEXT(B1,""hh:mm:ss""),B1))" 'on écrit la formule excel qui va bien
            'note que la formule contient une fonction "isnontext" "EstNonTexte" en français qui permet ici de gérer un cas toujours
            'possible de valeur déjà au bon format ce qui nous évitera de se retrouver avec une erreur #Valeur
            .NumberFormat = "[$-x-systime]h:mm:ss AM/PM" 'on lui donne le bon format
            .AutoFill Maplage 'on étend la formule à toute la plage temporaire
        End With
        Maplage.Copy 'on copie 
        Mafeuille.Range("C1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False ' et on colle en colonne C les valeurs et leur format
        Maplage.ClearContents 'on efface le contenu de la colonne temporaire
        Application.ScreenUpdating = True
    End Sub
    note que c'est également adaptable pour les colonnes D et F

    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 59
    Par défaut
    Merci pour cette piste, je vais tester tout de suite, car je creuse toujours...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 59
    Par défaut
    CA MARCHE

    Je vais prendre en effet la colonne avec la date et supprimer celle avec l'heure.

    Encore une fois

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

Discussions similaires

  1. [OpenOffice] Formatage cellule
    Par tistou19 dans le forum Documents
    Réponses: 1
    Dernier message: 10/05/2012, 10h35
  2. [XL-2007] Formatage cellule en fonction des données
    Par chris09300 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/01/2012, 14h44
  3. [FPDF] Probleme formatage cellule FPDF
    Par Jarod51 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 30/12/2010, 21h00
  4. Rafraichissement des graphiques
    Par LordPeterPan2 dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 03/10/2007, 15h40
  5. [VBA-E] formatage cellule date
    Par jeff37 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/05/2006, 22h31

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