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 cellules en fonction d'une autre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2015
    Messages : 46
    Par défaut Modifier des cellules en fonction d'une autre
    Bonjour,

    Je suis débutant dans le domaine mais j'ai des travaux à réaliser sur Excel nécessitant un peu de programmation je pense.
    Je vous explique mon cas.

    Sur la même ligne, j'ai plusieurs dates (Date de mise en service, Date T1, Date T2, Date T3).
    Mon souhait serait que quand je remplis la cellule "date de mise en service", les cellules des dates T1, T2 et T3 se vident pour recommencer le cycle. Seule condition à respecter : La nouvelle date de mise en service doit être strictement supérieur aux dates T1, T2 et T3 pour qu'elles se vident.

    Alors j'ai tenté en passant par la macro puis en éditant le code mais ça ne marche.
    J’espère que vous allez pouvoir m'aider

    A bientôt
    Karl

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,


    et donc quel code utilise tu pour comparer tes dates ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2015
    Messages : 46
    Par défaut
    Citation Envoyé par bbil Voir le message
    Bonjour,


    et donc quel code utilise tu pour comparer tes dates ?
    Bonjour,

    J'ai voulu le retrouver mais j'ai du le supprimer.
    En gros, c'était :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sub....
    If Range ("A1")>Range("B1") or Range ("A1")>Range("C1") or Range ("A1")>Range("D1") Then Range("B1:D1").ClearContents
    End Sub

    PS : Je n'y connais rien jusqu'à présent et j'ai découvert cela cet après-midi, donc pas de moqueries svp :p

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Et donc tu conditionne ton cleau avec "OR" soit OU ... ce qui fait que tu efface tes données si au moins une des dates colonnes B à D est inférieure à A ... est-ce bien ce que tu veux ..? ne doit-tu pas avec la date en A dépasser les 3 autres dates ?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2015
    Messages : 46
    Par défaut
    Citation Envoyé par bbil Voir le message
    Et donc tu conditionne ton cleau avec "OR" soit OU ... ce qui fait que tu efface tes données si au moins une des dates colonnes B à D est inférieure à A ... est-ce bien ce que tu veux ..? ne doit-tu pas avec la date en A dépasser les 3 autres dates ?
    Ce que je souhaite c'est que la date en A efface toutes les dates T1, T2,...,Tn ssi cette date A est supérieure à celles-ci.

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    salut,

    donc tu dois revoir ta formule et écrire Si DateA > DateB ET DateA>DateC et DateA>D ., effacer les donner ...


    maintenant que tu connais le code à lancer il faut voir comment exécuter celui-ci, pour cela tu as la piste à These qui utilise l'événement change appliqué à une feuille de calcul :


    http://silkyroad.developpez.com/VBA/...Feuille/#LII-E ...


    cet événement as comme paramètre la variable range Target qui représente la plage de cellule modifiée . tu peu ensuite utiliser la fonction Intersect pour extraire de Target les cellules appartenant à ta colonne A... et ensuite appliquer ton code à chacune de ces cellules..

    voici un exemple de boucle FOR qui lors d'un changement dans ta feuille parcours les cellules modifiées de la colonne A :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    '
    ' Code événementiel de ta feuille de calcule à mettre
    ' dans page de code associé à ta feuille 
    '
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim c As Range
        For Each c In Intersect(Me.Range("A:A"), Target)
          Debug.Print c.Address 'Voir résultat dans fenêtre exécution (CTRL+G)
        Next
    End Sub

  7. #7
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    A mettre dans le module de la feuille. Pour le test, la cellule cible est B3. Si une des 3 cellules à droite (C3, D3 et E3) a une date inférieure à celle entrée en B3, message sinon, effacement des dates :
    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
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        With Target
     
            If .Address(0, 0) <> "B3" Then Exit Sub
     
            If .Value < .Offset(, 1).Value Or .Value < .Offset(, 2).Value Or .Value < .Offset(, 3).Value Then
     
                MsgBox "La date est inférieure à une des trois dates situées en colonne C, D et E !"
     
            Else
                .Offset(, 1).Value = ""
                .Offset(, 2).Value = ""
                .Offset(, 3).Value = ""
     
            End If
     
        End With
     
    End Sub

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2015
    Messages : 46
    Par défaut
    Citation Envoyé par Theze Voir le message
    Bonjour,

    A mettre dans le module de la feuille. Pour le test, la cellule cible est B3. Si une des 3 cellules à droite (C3, D3 et E3) a une date inférieure à celle entrée en B3, message sinon, effacement des dates :
    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
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        With Target
     
            If .Address(0, 0) <> "B3" Then Exit Sub
     
            If .Value < .Offset(, 1).Value Or .Value < .Offset(, 2).Value Or .Value < .Offset(, 3).Value Then
     
                MsgBox "La date est inférieure à une des trois dates situées en colonne C, D et E !"
     
            Else
                .Offset(, 1).Value = ""
                .Offset(, 2).Value = ""
                .Offset(, 3).Value = ""
     
            End If
     
        End With
     
    End Sub
    merci j'essaye ca

Discussions similaires

  1. [XL-2010] Modifier une cellule en fonction d'une autre
    Par ledisciple dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/04/2013, 14h35
  2. [XL-2003] Figer une cellule en fonction d'une autre
    Par Loki83 dans le forum Excel
    Réponses: 1
    Dernier message: 27/04/2010, 21h47
  3. [XL-2003] verifier cellule en fonction d'une autre
    Par djoumusic dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 22/02/2010, 20h45
  4. [XL-2003] somme de cellules en fonction d'une autre
    Par Leehan dans le forum Excel
    Réponses: 7
    Dernier message: 28/10/2009, 16h32
  5. [E-07] Modifier des Label en fonction d'une variable
    Par DarkGenius dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/12/2008, 18h44

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