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 :

Vérifier si valeur est contenue dans un Range


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2018
    Messages : 84
    Par défaut Vérifier si valeur est contenue dans un Range
    Bonjour,
    A priori il s'agit d'un problème assez simple mais malgré les recherches je n'ai pas trouvé encore de solutions.

    J'ai une feuille avec une série de dates qui se suivent par formule en ligne 3
    J'ai une autre feuille avec un tableau nommé "FERIE" qui liste les jours fériés aussi renseignés par formule

    Dans le principe j'ai une boucle qui parcoure toutes les colonnes en vérifiant en 1er lieu la date de la ligne 3
    Si dimanche x = x + 1
    si samedi x = x + 2
    Et je coince sur le Férié pour vérifier si Cells(3,x) est contenu dans le Range "FERIE"

    Après plusieurs essais en tout genre je suis arrivé à ça mais ça ne marche toujours pas
    erreur 1004 impossible de lire la propriété Vlookup
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Set Ferie = Range("FERIE[Jours_Feries]")
    X = IIf(Application.WorksheetFunction.VLookup(Cells(3, X), Ferie, 1, False), X = X + 1, X = X) ' erreur 1004 impossible de lire la propriété Vlookup
    If Weekday(Cells(3, X)) = 1 Then X = X + 1
    If Weekday(Cells(3, X)) = 7 Then X = X + 2
    Merci d'avance pour l'aide

  2. #2
    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
    Bonjour,

    Comme je ne vois pas la finalité de ton code, voici un code qui colore les cellules en rouge si férié et en vert si samedi et dimanche. Attention, dans la fonction "Weekday()" j'ai défini le 1er jour à lundi :
    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
    25
    26
    27
    28
    29
     
    Sub Test()
     
        Dim Ferie As Range
        Dim I As Integer
     
        Set Ferie = Worksheets("Feuil2").Range("Jours_Feries")
     
        Do
     
            I = I + 1
     
            On Error Resume Next
            X = Application.WorksheetFunction.VLookup(Cells(3, I), Ferie, 1, False)
     
            If Err.Number <> 0 Then
     
                If Weekday(Cells(3, I), vbMonday) = 6 Then Cells(3, I).Interior.ColorIndex = 4
                If Weekday(Cells(3, I), vbMonday) = 7 Then Cells(3, I).Interior.ColorIndex = 4
     
            Else
     
                Cells(3, I).Interior.ColorIndex = 3
     
            End If
     
        Loop While Cells(3, I).Value <> ""
     
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2018
    Messages : 84
    Par défaut
    Bonjour Theze et merci

    J'ai bien les WE en vert mais toujours rien concernant les jours fériés

    je m'étais posé la question si cela ne venait pas des formules dans le classeur; ex:

    Pâques = ARRONDI(DATE(Année;4;MOD(234-11*MOD(Année;19);30))/7;0)*7-6

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 566
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 566
    Par défaut
    Bonjour

    En MFC on utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NB.SI(JF;Date à tester)>0
    JF étant la plage des Jours Fériés (juste les dates sans titres ou autre)

    On peut aisément transposer en VBA. Attention à l'ordre car Week end et jours fériés ont des communs

  5. #5
    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,

    Voici un classeur pour le test !
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/05/2012, 18h39
  2. trouver si une valeur est contenue dans ObservableCollection
    Par Golzinne dans le forum Silverlight
    Réponses: 3
    Dernier message: 25/01/2012, 10h08
  3. Comment vérifier si une variable est contenu dans un tableau ?
    Par larffas68 dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 05/01/2011, 23h17
  4. Vérifier si une chaîne de caractère est contenu dans une autre
    Par Marvelll dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 22/02/2010, 14h54
  5. Réponses: 2
    Dernier message: 28/03/2009, 19h13

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