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 Excel / Boucle For et If multiples


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien
    Inscrit en
    Mars 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Mars 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut VBA Excel / Boucle For et If multiples
    Bonjour à tous,

    J'ai un problème que je n'arrive pas à résoudre...
    Dans le fichier (simplifié) excel ci-joint, je voudrais remplir la colonne E avec une date = à celle saisie dans colonne C + 2 jours à condition que:

    Colonne D = 7 ET Colonne A <> 10 ou 17 ET Colonne B <> FRAR ou FR4U

    Autrement la date colonne E est égale à date colonne C

    J'ai testé ce code...sans succés:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub testFiltre()
     
    Dim x, nb_lignes
    nb_lignes = Application.WorksheetFunction.CountA(Range("A:A"))
     
        For x = 2 To nb_lignes
     
        If Range("D" & x) = 7 And (Range("A" & x) <> 17 Or Range("A" & x) <> "10") _
        And (Range("B") <> "FRA" Or Range("B") <> "FR4U") _
        Then Range("E" & x) = Range("C" & x) + 2 Else: Range("E" & x) = Range("C" & x)
     
        Next x
     
    End Sub
    J'ai essayé plusieurs formules (en autres avec ElseIf) mais je suis à court d'idée...

    Pour info, je suis complètement autodidacte en VBA, alors voilà....

    D'avance merci pour votre aide.

    Franck
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Bonjour à toi,

    VBA obligatoirement pour ça ?

    Car avec une formule classique...
    En cellule E5:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ET(D5="7";OU(A5<>"10";A5<>"17");OU(B5<>"FRAR";B5<>"FR4U"));C5+2;C5)
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 102
    Points : 190
    Points
    190
    Par défaut en VBA mais est ce indispensable en effet...
    Bonjour,

    D'accord avec Cerrede... et en VBA si j'ai bien tout compris dans tes conditions, sinon adapte.

    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
     
    Option Explicit
     
    Sub testFiltre()
     
    Dim Cellu As Range
     
        For Each Cellu In Range("A2:A" & Range("A2").End(xlDown).Row)
     
            If (Cellu.Offset(0, 3) = 7 And (Cellu <> 17 Or Cellu <> 10)) And _
                (Cellu.Offset(0, 1) <> "FRAR" Or Cellu.Offset(0, 1) <> "FR4U") Then
     
                Cellu.Offset(0, 4) = Cellu.Offset(0, 2) + 2
            Else
                Cellu.Offset(0, 4) = Cellu.Offset(0, 2)
            End If
     
        Next Cellu
     
    End Sub
    Cordialement.
    Bruno

  4. #4
    Candidat au Club
    Homme Profil pro
    Technicien
    Inscrit en
    Mars 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Mars 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    @cerede2000

    Salut!

    Je te remercie pour ta réponse... Je me demande pourquoi je n'y ai pas pensé en faite
    Je pensais VBA car cette formule s'insère dans une plus grande macro, et c'est pour simplifier et automatiser plusieurs opérations que j'essaye de construire celle-ci...en autodidacte

    En tout cas, merci encore!
    Cdlt
    Franck

    @ZX12R

    Salut!
    Merci pour ta réponse!
    Je vais tester la formule que m'a donné Cerrede, et quand j'aurais un peu de temps, je testerai ta formule

    Cdlt
    Franck

  5. #5
    Candidat au Club
    Homme Profil pro
    Technicien
    Inscrit en
    Mars 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Mars 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Correction
    Par contre, la formule qui fonctionne d'après mes critères et le format des cellules est:
    =SI(ET(D2=7;ET(A2<>"10";A2<>"17");ET(B2<>"FRAR";B2<>"FR4U"));C2+2;C2)

    A+

Discussions similaires

  1. [VBA EXCEL] - Boucles et UserForm
    Par ancel17 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/10/2008, 18h35
  2. [vba excel] boucle et controle
    Par CIBOOX dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/07/2007, 09h13
  3. VBA EXCEL : boucle, recherche ligne
    Par sebi78 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 03/04/2007, 13h02
  4. [VBA-E] erreur boucle for each
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/02/2006, 16h38
  5. [VBA][Excel] Comment faire pour faire une boucle?
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 29
    Dernier message: 19/12/2005, 14h48

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