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 :

Problème VBA d'une jauge verticale


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Par défaut Problème VBA d'une jauge verticale
    Bonjour,

    Je dois réaliser une jauge verticale pour un tableau de bord.
    J'ai le code vba de l'ouvrage d'Alain Fernandez (l'essentiel du tableau de bord) mais je voudrais le modifier mais je n'y arrive pas.

    Ce que je voudrais :
    - avoir une cellule valeur qui permet de mettre à jour la jauge à la place d'un scrollbar
    - mettre la jauge dans la feuil2 par exemple et les données dans la feuil1

    Merci par avance
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour et bienvenue

    Ci-joint le fichier modifié avec la jauge sur la deuxième feuille, les valeurs sur la première feuille et la variation de la jauge suivant la valeur de la cellule A4

    Pièce jointe 29880

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Par défaut
    merci fring pour cette réponse rapide. Je pense que cela a du être "facile" pour toi.

    Maintenant je vais essayer de la comprendre et de la comparé avec l'autre. Pour ma culture vba!!

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par nichboul Voir le message
    Maintenant je vais essayer de la comprendre et de la comparé avec l'autre. Pour ma culture vba!!
    Excellente initiative, n'hésite pas si besoin d'explication

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Par défaut
    fring, je voudrais savoir à quoi correspond le fait de mettre un . devant un objet dans le code vba.
    .mercure....

    merci

  6. #6
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    C'est ce qui le lie à la feuille 2, tu peux soit l'écrire comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets(2).objet1 = "toto"
    Sheets(2).objet2 = "titi"
    Sheets(2).objet3 = "tutu"
    soit comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Sheets(2)
      .objet1 = "toto"
      .objet2 = "titi"
      .objet3 = "tutu"
    End With

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Par défaut
    le "with" te permet donc de ne pas taper à chaque fois le nom de la feuille.

    merci

  8. #8
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Exact, c'est valable pour tout, exemple pour une cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    With Range("A1")
      If Range("C10") = "titi" Then
        .Value = "toto" '<-- concerne la cellule A1
        .Interior.ColorIndex = 3 '<-- concerne la cellule A1
        .Font.Bold = True '<-- concerne la cellule A1
      End If
    End With

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Par défaut
    bonjour fring

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Range("B1:B4"), Target) Is Nothing Then
        seuilbas = Range("B1").Value '<-- valeur du seuil bas
        seuilhaut = Range("B2").Value '<-- valeur du seuil haut
        objectif = Range("B3").Value '<-- valeur de l'objectif
        jauge = Range("B4").Value '<-- valeur de la jauge
        Call jaugeV(seuilbas, seuilhaut, jauge, objectif)
     
    End If
    End Sub
    Le code du module (jaugeV) je l'ai à peu près compris, il n'y a pas trop de changement.
    Par contre, le code ci dessus pose un peu pb. Surtout les 2 premières lignes :
    Worksheet_Change ? c'est à dire à chaque fois qu'une cellle d'une feuille change??
    Target as Range ?
    If Not Application.Intersect(Range("B1:B4"), Target) Is Nothing Then ??
    A quoi cela correspond t il concrètement
    merci

  10. #10
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Alors...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_Change
    permet d'exécuter une action lors de l'évènement Change de la feuille, c'est à dire à chaque fois qu'on modifie la valeur d'une cellule.

    Target signifie Cible et on définit l'objet Target en lui attribuant le type Range (cellule) ce qui en d'autres termes signifie la cellule cible (cellule concernée par le changement)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Application.Intersect(Range("B1:B4"), Target) Is Nothing Then
    Afin d'éviter d'exécuter l'action suite à un changement dans n'importe quelle cellule de la feuille, on peut définir une plage de cellule bien précise. En clair Intersect(Range("B1:B4"), Target) signifie "si la cible (Target) est comprise dans la plage de cellules B1:B4 alors on exécute l'action. Ce qui permet dans ton cas de mettre à jour la jauge en cas de modification d'une de ces 4 cellules.
    En VBA c'est un peu tordu, au lieu de dire "si la cible est comprise", on dit "si la cible n'est pas n'est pas comprise".

    Mes explications ne sont peut-être pas très limpides, jette un oeil dans l'aide de Visual basic, tu auras des explications plus détaillées.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Par défaut
    merci bien pour tous ces renseignements. J'ai également regardé l'aide d'excel mais c'est bien d'avoir 2 points de vue.

  12. #12
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Citation Envoyé par fring Voir le message
    En VBA c'est un peu tordu, au lieu de dire "si la cible est comprise", on dit "si la cible n'est pas n'est pas comprise".
    Je me permets une petite correction.
    VBA n'est pas tordu, il applique une notion élémentaire de maths modernes.

    Il faut lire: "Si l'intersection entre la cible et la plage de référence n'est pas vide (ou égale à rien)".
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

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

Discussions similaires

  1. Problème VBA: Activer une feuille à l'aide d'une variable
    Par andy05 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/03/2014, 15h10
  2. [VBA-E] Problème pour remplir une listbox multicolonne
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/05/2007, 16h55
  3. [VBA-E] Problème pour faire une boucle dans une userform
    Par Garlim dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/05/2007, 23h10
  4. [VBA-E] Problème pour coder une boucle
    Par lord-asriel dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/03/2007, 10h10
  5. [VBA-Excel]Problème pour remplir une listview
    Par Le Djé dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/01/2006, 16h27

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