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 :

VBA, modifer une cellule en fonction d une autre


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Novembre 2017
    Messages : 4
    Par défaut VBA, modifer une cellule en fonction d une autre
    Bonjour

    Je débute en VBA et je bloque pour créer une condition en fonction de la valeur d'une cellule et j'aurai besoin qu'on m'aide.

    j' ai une colonne de N3 à N7 qui contient uniqument des 0 et une colone de O3 à O7 avec des chiffres diverses.

    En fait je veux créer une macro qui si la valeur change en N et devient>0 alors la valeur en O elle devienne égale à 0, sinon elle conserve sa valeur actuelle.

    Je veux en gros IF Range (N3:N7)>0 then Range (03:07)=0 , Else Range (03:07)= valeur actuelle.

    Pouvez vous me donner le code permettant de réaliser cela ?

    Merci beaucoup pour votre aide .

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Il faut utiliser une macro évènementielle Worksheet_Change.
    Lis ça : https://msdn.microsoft.com/fr-fr/lib.../ff839775.aspx
    Et ça : http://silkyroad.developpez.com/VBA/EvenementsFeuille/

    Faire un test pour vérifier que la cellule modifiée est bien dans la zone souhaitée (N3:N7) et que sa valeur est non nulle.
    Si c'est le cas, transférer la valeur avec un simple =.

  3. #3
    Candidat au Club
    Femme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Novembre 2017
    Messages : 4
    Par défaut
    Bonjour merci pour ces liens

    En effet ca m'aide un peu à comprendre mais je dois mal déchiffrer
    Le code car quand je transpose à mon cas cela ne marche pas ...

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    conformément aux règles de ce forum, merci de poster via l'icône dédiée le code au moins entrepris …

    ___________________________________________________________________________________________________________
    Je suis Paris, New-York, Mogadicio, Barcelone, London, Manchester, Egypte, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par umbrelala Voir le message
    je dois mal déchiffrer le code car quand je transpose à mon cas cela ne marche pas ...
    Peux-tu montrer le code que tu as essayer de faire ?
    "Ne marche pas", ce n'est pas très explicite comme explication...

  6. #6
    Candidat au Club
    Femme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Novembre 2017
    Messages : 4
    Par défaut
    Biensur excusez-moi ,je démarre sur le forum ci dessous le code tenté:

    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 Excel.Range) 
        If Target.Column = 14 Then 
            ThisRow = Target.Row 
            If Target.Value > 0 Then 
                Range("0" &; ThisRow)= 0
            Else 
                Range("0" &; ThisRow) =
            End If 
        End If 
    End Sub
    le code est surligné en rouge a partir de Range("0" &; ThisRow)= 0.

    et je ne sais pas non plus quoi mettre comme valeur après le Else....

  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
    Bonsoir,

    D'une part, tu confonds 0 et O (zéro et O), et comme il n'existe pas de colonne 0 ça foire et ensuite que fond les point-virgules après les esperluette ?
    et comme te l'a demandé Marc, utilise les balises CODE pour encadrer ton code (bouton #). Testes ce code pour voir si il te convient :
    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
     
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
     
        If Target.Column <> 14 Then Exit Sub
        If Target.Row < 3 Or Target.Row > 17 Then Exit Sub
        If Target.Count > 1 Then Exit Sub
     
        If Target.Value > 0 Then
     
            Application.EnableEvents = False
            Target.Offset(, 1).Value = 0
            Application.EnableEvents = True
     
        End If
     
    End Sub

  8. #8
    Candidat au Club
    Femme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Novembre 2017
    Messages : 4
    Par défaut Merci++++
    Super cela marche !!

    je vous remercie vraiment beaucoup pour votre aide précieuse!

    une derniere petite question , comment faire pour que cela s'applique également à la colonne 16 et 18 en plus de la 14 ?

    Je vous souhaite un bon week end

  9. #9
    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
    Re,

    Teste avec ceci :
    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
     
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
     
        If Target.Column <> 14 And Target.Column <> 16 And Target.Column <> 18 Then Exit Sub
        If Target.Row < 3 Or Target.Row > 17 Then Exit Sub
        If Target.Count > 1 Then Exit Sub
     
        If Target.Value > 0 Then
     
            Application.EnableEvents = False
            Target.Offset(, 1).Value = 0
            Application.EnableEvents = True
     
        End If
     
    End Sub

Discussions similaires

  1. [XL-2016] VBA- couleur de police sur une ligne en fonction d'une cellule
    Par Apoulit dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/02/2017, 11h54
  2. [XL-2013] Modification de cellules en fonction d'une autre
    Par atk_49 dans le forum Excel
    Réponses: 2
    Dernier message: 30/06/2015, 17h58
  3. Réponses: 2
    Dernier message: 05/03/2010, 14h15
  4. Nom d'une cellule en fonction d'une variable
    Par Kibald dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/12/2008, 21h47
  5. [MySQL] Changement de couleur d'une cellule en fonction d'une requete
    Par freko dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 10/07/2008, 16h56

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