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 :

VB - remplacement cellules avec 3 conditions


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 49
    Par défaut VB - remplacement cellules avec 3 conditions
    Bonjour,

    J'ai besoin d'une petite aide en VB sur Excel 2007.

    Dans une feuille avec plusieurs colonnes et plusieurs valeurs. Je souhaiterais faire une macro qui :
    condition 1 : valeur "Xerox Phaser 7800GX"
    condition 2 : colonne F : valeur >100
    condition 3 : colonne F : valeur inferieur ou égale à 550
    Que la cellule F1, F2, etc... soit remplacée par "-100"

    Même chose pour la colonne G, H et I mais avec la condition 2 qui change : valeur inferieur ou égale à 300

    ps : vous trouverez, ci-joint, le fichier en question.

    Cordialement
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonsoir Supremereboot, la forum
    Merci de te conformer aux règles du forum et éviter de charger ce super site par des pièces jointes (voir règles ci-haut)
    voila un code bricolé te donne idée comment manipuler pour changer la colonne F
    à toi de compléter le reste
    Bonne continuation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub rechetreplace()
    Dim i As Long
    Dim Plage As Range
    With Sheets("21-02-2017")
    i = .Range("A65536").End(xlUp).Row 
    For i = 2 To i
    If Cells(i, 2) = "Xerox Phaser 7800GX" And Cells(i, 6).Value > 100 And Cells(i, 6).Value < 550 Then
    Cells(i, 6).Value = -100
    End If
    Next i
    End With
    End Sub

  3. #3
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 49
    Par défaut
    Parfait merci

  4. #4
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 49
    Par défaut
    Bonjour,

    J'ai modifié le code pour l'adapté a plusieurs colonnes. J'ai un message d'erreur : end if sans bloc if.
    Pouvez vous m'aider ?

    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
     
    Dim i As Long
    Dim Plage As Range
    With Sheets("Feuil1")
    i = .Range("A65536").End(xlUp).Row
    For i = 2 To i
    If Cells(i, 2) = "Xerox Phaser 7800GX" And Cells(i, 7).Value > 100 And Cells(i, 7).Value < 551 Then
    Cells(i, 7).Value = -100
    'End If
    'Next i
    If Cells(i, 2) = "Xerox Phaser 7800GX" And Cells(i, 8).Value < 300 Then Cells(i, 8).Value = -100
    'End If
    'Next i
    If Cells(i, 2) = "Xerox Phaser 7800GX" And Cells(i, 9).Value < 300 Then Cells(i, 9).Value = -100
    'End If
    'Next i
    If Cells(i, 2) = "Xerox Phaser 7800GX" And Cells(i, 10).Value < 300 Then Cells(i, 10).Value = -100
    End If
    Next i
    End With

  5. #5
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour
    chaque (if) doit avoir un (end if)
    et chaque (for) doit avoir son (next)
    si tu supprime l'apostrophe devant (end if) et (next) je crois que ça va aller
    Attention tu applique ça si tu revient à la ligne apprès (Then) et si tu écris dana la meme ligne tu n'as besoin que du (next i) que tu peux l'insérer à la meme ligne avec deux point en avant ( : next i )
    bonne continuation
    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
    Sub test()
    Dim i As Long
    Dim Plage As Range
    With Sheets("21-02-2017")
    i = .Range("A65536").End(xlUp).Row
    For i = 2 To i
    If Cells(i, 2) = "Xerox Phaser 7800GX" And Cells(i, 7).Value > 100 And Cells(i, 7).Value < 551 Then
    Cells(i, 7).Value = -100
    End If
     
    If Cells(i, 2) = "Xerox Phaser 7800GX" And Cells(i, 8).Value < 300 Then
     Cells(i, 8).Value = -100
    End If
     
    If Cells(i, 2) = "Xerox Phaser 7800GX" And Cells(i, 9).Value < 300 Then
     Cells(i, 9).Value = -100
    End If
     
    If Cells(i, 2) = "Xerox Phaser 7800GX" And Cells(i, 10).Value < 300 Then
     Cells(i, 10).Value = -100
    End If
    Next i
    End With
    End Sub

  6. #6
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    J'ai corrigé voir réponse ci haut
    si non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
    Dim i As Long
    Dim Plage As Range
    With Sheets("21-02-2017")
    i = .Range("A65536").End(xlUp).Row
    For i = 2 To i
    If Cells(i, 2) = "Xerox Phaser 7800GX" And Cells(i, 7).Value > 100 And Cells(i, 7).Value < 551 Then Cells(i, 7).Value = -100
    If Cells(i, 2) = "Xerox Phaser 7800GX" And Cells(i, 8).Value < 300 Then Cells(i, 8).Value = -100
    If Cells(i, 2) = "Xerox Phaser 7800GX" And Cells(i, 9).Value < 300 Then Cells(i, 9).Value = -100
    If Cells(i, 2) = "Xerox Phaser 7800GX" And Cells(i, 10).Value < 300 Then Cells(i, 10).Value = -100
    Next i
    End With
    End Sub

Discussions similaires

  1. Réponses: 7
    Dernier message: 08/07/2014, 12h21
  2. [XL-2007] Compter des cellules, avec une condition
    Par OccitaL dans le forum Excel
    Réponses: 6
    Dernier message: 17/06/2010, 15h15
  3. Remplir une cellule Excel avec une condition sous vb
    Par enibris dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/01/2008, 13h47
  4. Recherche nombre de cellule avec une condition
    Par solorac dans le forum Excel
    Réponses: 6
    Dernier message: 23/08/2007, 23h44
  5. somme de cellule avec une condition
    Par fullcircle dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/06/2006, 07h17

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