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 pour insérer un calcul dans plusieurs cellules par macro [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Juillet 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 12
    Points : 12
    Points
    12
    Par défaut Problème pour insérer un calcul dans plusieurs cellules par macro
    Bonjour à tous!

    Voila je souhaite mettre sous macro le test logique suivant :

    Pour chaque cellule de la plage (A7:A34).

    Si dans la plage (A7:A34) une des valeurs est égale à une des valeurs de la plage (J7:J30) alors écrire dans la cellule offset (0,1) le calcul A

    Ou si dans la plage (A7:A34) une des valeurs est égale à une des valeurs de la plage (K7:K30) alors écrire dans la cellule offset (0,1) le calcul B

    Ou si dans la plage (A7:A34) une des valeurs est égale à une des valeurs de la plage (L7:L30) alors écrire dans la cellule offset (0,1) le calcul C

    Ou si dans la plage (A7:A34) une des valeurs est égale à une des valeurs de la plage (M7:M30) alors écrire dans la cellule offset (0,1) le calcul D

    Si aucune de ces 4 conditions n'est remplie alors écrire "erreur désignation"

    J'ai fait beaucoup de test mais je n'arrive pas à faire fonctionner tout en même temps, voici le code et le fichier excel:

    Merci!

    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
    22
    23
    24
    Private Sub CommandButton2_Click()
     
    Dim cell As Range
     
    For Each cell In Range("A7:A34")
     
        If IsError(Application.VLookup(cell.Value, Range("J7:J30"), 1, False)) = False Then
            cell.Offset(0, 1) = FormulaR1C1 = "(R[0]C[2]*R[0]C[3]*R[0]C[4]+R[0]C[5]*R[0]C[2]*R2C[4])"
     
        If IsError(Application.VLookup(cell.Value, Range("K7:K30"), 1, False)) = False Then
            cell.Offset(0, 1) = FormulaR1C1 = "(R[0]C[2]*R[0]C[3])"
     
        If IsError(Application.VLookup(cell.Value, Range("L7:L30"), 1, False)) = False Then
            cell.Offset(0, 1) = FormulaR1C1 = "(R[0]C[2]*R[0]C[4])"
     
        If IsError(Application.VLookup(cell.Value, Range("M7:M30"), 1, False)) = False Then
            cell.Offset(0, 1) = FormulaR1C1 = "(R[0]C[3]*R[0]C[3])"
        Else
            cell.Offset(0, 1) = "Erreur désignation"
        End If
     
    Next cell
     
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Essaie comme cela
    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 CommandButton2_Click()
    Dim cell As Range
        For Each cell In Range("A7:A34")
            If IsError(Application.VLookup(cell.Value, Range("J7:J30"), 1, False)) = False Then
                cell.Offset(0, 1).FormulaR1C1 = "=(R[0]C[2]*R[0]C[3]*R[0]C[4]+R[0]C[5]*R[0]C[2]*R2C[4])"
            ElseIf IsError(Application.VLookup(cell.Value, Range("K7:K30"), 1, False)) = False Then
                cell.Offset(0, 1).FormulaR1C1 = "=(R[0]C[2]*R[0]C[3])"
            ElseIf IsError(Application.VLookup(cell.Value, Range("L7:L30"), 1, False)) = False Then
                cell.Offset(0, 1).FormulaR1C1 = "=(R[0]C[2]*R[0]C[4])"
            ElseIf IsError(Application.VLookup(cell.Value, Range("M7:M30"), 1, False)) = False Then
                cell.Offset(0, 1).FormulaR1C1 = "=(R[0]C[3]*R[0]C[3])"
            Else
                cell.Offset(0, 1) = "Erreur désignation"
            End If
        Next cell
    End Sub
    Cordialement.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Juillet 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Super merci! ça marche parfaitement!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/08/2011, 14h44
  2. Réponses: 4
    Dernier message: 12/07/2010, 19h48
  3. [VBA-E] Problème pour insérer des lignes dans une feuille Excel
    Par skystef dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2007, 14h13
  4. Réponses: 2
    Dernier message: 03/08/2006, 18h21
  5. Probléme pour insérer une variable dans un champs
    Par BOUTRAIS dans le forum Access
    Réponses: 2
    Dernier message: 11/04/2006, 22h45

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