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 avec macro pour comparer la valeur de 2 cellules de 2 colonnes différentes avec Msg box [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Décembre 2015
    Messages : 15
    Par défaut Problème avec macro pour comparer la valeur de 2 cellules de 2 colonnes différentes avec Msg box
    Bonjour à tous,

    J'ai une problématique sur un tableau avec des valeurs colonnes D et E à comparer. En colonne D la valeur est figée, en colonne E les valeurs sont une addition de plusieurs cellules à renseigner à la mano. Je voudrais établir un msgbox quand la valeur de la cellule E est supérieure à celle de la D. Mes valeurs s'étendent des lignes 5 à 117.
    Voici ce que j'ai fait mais ça bloque, en répétition, la macro ne comprend qu'il doit passer par chaque cellule pour contrôler les caleurs supérieures et le message boucle si une valeur est supérieure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_Change(ByVal Target As Range)
    For i = 5 To 117
    VALEURA = Range("E" & i).Value
    For j = 5 To 117
    VALEURB = Range("D" & j).Value
    If VALEURA > VALEURB Then
    MsgBox ("Valeur supérieure => ligne " & j)
    End If
    Next j
    Next i
    End Sub
    Quelqu'un aurait une idée?

    merci d'avance.
    Cdlt.

  2. #2
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut Problème avec macro pour comparer la valeur de 2 cellules de 2 colonnes différentes avec Msg box
    Je ne comprend pas les 2 for imbriqués

    les valeurs de la colonne E doivent être inférieures à toutes les valeurs de la colonne D ?????

    si tu veux comparer a la valeur sur la même ligne un for doit être suffisant

    ou utiliser un format conditionnel (en rouge si la valeur est supérieure)

  3. #3
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Salut,

    Je vais dans le même sens que a_diard.

    Il faut comparer les contenus des colonnes D et E de la même ligne. Donc avec une seul boucle et un seul indice.

    Au niveau du code, cela donne un truc de ce style.
    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)
        For i = 5 To 20
            VALEURA = Range("E" & i).Value
            VALEURB = Range("D" & i).Value
            If VALEURA > VALEURB Then
                MsgBox ("Valeur supérieure => ligne " & i)
                Exit Sub
            End If
        Next i
    End Sub
    J'ai ajouter un exit sub pour mettre fin à la macro dès qu'on a trouver la ligne qui va bien.

    PS : pense à indenter (décaler) le texte de ton code quand il y a des boucles et ou tests. C'est tout de suite plus lisible

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Bien malin serait celui qui pourrait répondre avec certitude à la question posée, telle que posée. Elle est floue, cette question.
    J'observe qu'il y est fait allusion à des additions de cellules(****). S'agit-il d'additions de valeurs sur la même ligne (auquel cas une seule boucle suffit en effet) ou d'additions cumulées en colonne E sur les lignes suivantes (auquel cas ce sont deux boucles, mais la deuxième utilisant alors i + j)
    **** quelle était la nécessité de préciser que les valeurs dans E étaient celles d'additions s'il ne s'agissait que de comparer, sur la même ligne, D et E ? (précision inutile ? ou autre ? je n'en sais rien ...)

  5. #5
    Membre chevronné
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Par défaut
    bonsoir,
    Si comme le devine unparia les cellules à additionner ou autre se trouve sur la même ligne si on utilise l'événement _Change alors on peut utiliser le paramètre Target de la procédure, voici un code qui fonctionne dans ce cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Cells(Target.Row, 4) <= Cells(Target.Row, 5) Then
        MsgBox ("Valeur supérieure => ligne " & Target.Row)
    End If
    End Sub
    avec ces données :
    Nom : données.JPG
Affichages : 263
Taille : 48,4 Ko

    cordialement
    geogeo

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    si le but est de visualiser des erreurs ou écarts, ne jamais oublier les mises en forme conditionnelles
    si le but est de réaliser un traitement sur ces erreurs ou écarts, la formule logique utilisée sur la MEF sera la même mais à écrire en VBA
    si le but est de lister les lignes sur une feuille excel, par formule également c'est possible


    on a le choix, mais on ne peut pas cerner le besoin car on ne connait pas la finalité réelle.

  7. #7
    Membre averti
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Décembre 2015
    Messages : 15
    Par défaut
    Merci à tous. Je n'avais pas été claire dans l'énoncé effectivement. Les solutions proposées sont parfaites. YOu are awesome

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

Discussions similaires

  1. [XL-2010] Problème avec macros pour "éclatement de cellule"
    Par Dubbleu dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/06/2013, 14h53
  2. [MySQL] Problème pour comparer des valeurs avec accent
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/12/2010, 08h36
  3. [XL-2000] Macro pour copier-coller valeur avec un while
    Par golghot dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/06/2010, 16h52
  4. [XL-2007] Macro pour récupérer la valeur d'une formule avec Aujourd'hui
    Par patougaffou dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 28/09/2009, 18h28
  5. petite aide sur une macro pour transfere de valeur
    Par fpouzou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/06/2007, 16h54

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