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 :

Automatiser calcul dès modification PLAGE de cellules


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    étudiante
    Inscrit en
    Mai 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Mai 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Automatiser calcul dès modification PLAGE de cellules
    Bonjour!

    Je cherche à automatiser le calcul d'une valeur cible dès modification d'un ensemble de cellule. J'ai trouvé un "code" sur internet, PROBLEME: je souhaite l'appliquer sur: des cellules seules ET sur UNE PLAGE de cellule (G21:G92): concrètement dès que la valeur d'une cellule citée ci-dessous change, cela active le calcul d'une valeur cible.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Address = Range("C2").Address Or Target.Address = Range("C4").Address Or Target.Address = Range("G21:G92").Address Then 
    Range("F1").GoalSeek Goal:=0, ChangingCell:=Range("D10") 
    End If 
    End Sub
    Pour info le code ci-dessus marche quand je change le cellules C2, C4, mais il ne marche pas quand je modifie une cellule dans la plage G21:G92
    Je suis débutante en VBA, quelqu'un pourrait m'aider? Merci d'avance !
    PS2: c'est mon anniverssaire aujourd'hui

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour

    Intéresse-toi à la méthode Intersect (rubrique Application.Intersect, méthode de ton aide interne VBA)
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    étudiante
    Inscrit en
    Mai 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Mai 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Pourriez vous préciser svp?
    Si vous faites référence à l'aide fournie à partir de la page VBA (en cliquant sur "?"), je l'ai déjà consultée, mais je ne comprends rien à rien à ce qu'ils me racontent, on dirait que c'est les phrases ont été directement traduites de l'anglais ? J'ai tenté d'utiliser Intersect de plusieurs manières, dont:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = Range("C2").Address Or Target.Address = Range("C4").Address Or Target.Address = Range("C5").Address Or Target.Address = Range("C6").Address Or Target.Address = Range("C10").Address Or Target.Address = Range("C16").Address Or Target.Address = Range("C22").Address Or Target.Address = Range("C23").Address Or Target.Address = Range("C24").Address Or Target.Address = Range("C25").Address Or Target.Address = Range("L55").Address Or Target.Address = Range("L79").Address Or Target.Adress=Intersect(Target, Range("P31:P92")).Adress
    Then
        Range("F7").GoalSeek Goal:=0, ChangingCell:=Range("C7")
    End If
    End Sub
    Evidemment sa na marche pas. Comment utiliser intersect ? Pour info j'ai excel 2010.

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    C'est pourtant simple (et rédigé en très bon français ...!)
    - Target est un objet Range (la cellule objet de la modification)
    - Range("G21:G92") est également un objet Range
    target est dans Range"G21:G92") si l'intersection de ces deux objet n'est pas Nothing (rien) --->> à main levée --->>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not application.intersect(target, range("G21:G92")) is nothing
    Quand tu lis l'aide : lis bien, au lieu de crier que c'est une mauvaise traduction. Surtout que cette rubrique est fort bien rédigée (mais apparemment non "digérée")
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

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