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 :

[Novice] Comparer deux feuilles excel. [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2008
    Messages : 59
    Points : 42
    Points
    42
    Par défaut [Novice] Comparer deux feuilles excel.
    Bonjour à tous,

    J'en reviens à vous car cela est trop compliqué pour mes faibles notions en vba.

    J'ai une feuille nomée "Feries" avec les dates des jours fériées sur plusieurs années en "B2" et en "C2" (Jour de l'An, Lundi de Pâques, Fête du travail, etc...) qui correspont aux dates des jours fériés depuis 2010 jusqu'en 2024.

    Sur une autre feuille nomée "Prestations" j'ai en "A2" toutes les dates du calendrier depuis 2010 jusqu'en 2024

    Comment en vba effectuer une recherche dans la feuille "Prestations" et chaque fois qu'il trouve une date de jour feries qui se trouve dans la feuille "Feries" ajouter dans la feuille "Prestations" le nom du jour ferie en "C" (Jour de l'An, Lundi de Pâques, Fête du travail, etc...) ?

    Avec une formule excel cela donne +- :
    =SiErreur(RechercheV($B$2;Ferie;2;Faux);"")

    Merci de m'avoir lu
    fasedan

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonsoir
    Curieux comme procédé d'écrire tous les jours fériés jusqu'à 2024!
    Pour ta demande, tu as ta formule Excel qui marche, il suffit de la traduire en vba.
    Ci-après un exemple

    • Feuille Feries, la plage à 2 colonnes comportant les dates fériées et leur nominations est nommée: Ferie
    • Feuille Prestations, à partir de A2 jusqu'à Axx on a les dates et sur chaque ligne de la colonne C, on écrit le nom de l'éventuel jour férié correspondant à la date en A (par ta formule)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Test()
    Dim LastLig As Long
     
    Application.ScreenUpdating = False
    With Worksheets("Prestations")
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row                'Dernière ligne remplie de la colonne A de la feuille prestations
        With .Range("C2:C" & LastLig)
            .Formula = "=IFERROR(VLOOKUP(A2,Ferie,2,FALSE),"""")"       'On écrit ta formule en C2:Cxx
            .Value = .Value                                             'On fige les valeurs données par la formule
        End With
    End With
    End Sub

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2008
    Messages : 59
    Points : 42
    Points
    42
    Par défaut Merci à mercatog
    Merci de mavoir lu et repondu,

    En fait j'ai une feuille nomée "Prestations" dans laquelle il y a en colonne "A" toutes les dates sur plusieurs années et je voudrais retrouver les jours fériés de chaques années et indiquer en colonne "D" "Jour de l'An, Lundi de Pâques, Fête du travail, etc...
    J'ai lu pas mal sur le forum, mais je ne sais comment m'y prendre, car il y a des jours fériés fixes et non fixes et de quel manière rechercher les dates en "A" pour savoir si elles sont fériés ou pas.
    Novice et passionné par le vba mais là, je suis dans le gaz total.

    Feuille "Prestations"

    ........"A" .........................."D"

    01/01/2010.................Jour de l'An
    02/01/2010
    etc..
    04/04/2010
    05/04/2010.................Lundi de Pâques
    06/04/2010
    etc...
    etc...

    Merci d'avance pour votre aide.
    fasedan

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Étant novice n'est pas une justification pour ne pas lire ce qu'on te propose.
    Dans ton premier post tu parle de colonne C, maintenant de colonne D

    Relis ma première proposition (en entier et non en diagonale) et essaies d'adapter.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2008
    Messages : 59
    Points : 42
    Points
    42
    Par défaut Merci poir le code.
    Comme vous disiez plus haut, "curieux comme procédé..."
    Je me demandais si cela n'était pas plus aisé de trouver directement les jours fériés sur la feuille "Prestations" plutôt que (RechercheV) dans les celulles.
    Comme je suis incapable de trouver les jours fériés en vba, je les ais directement notés sur une feuilles "Feries" pour les transposer sur la feuille "Prestations" par (RechercheV).

    Pour ce qui est de votre code, cela fonctionne mais il recopie la formule à l'identique à chaque fois. Et je n'arrive pas à incrémenter de 1 le (R2C1), Donc de "D2" à "D3" à "D4" etc...


    en D2: =SIERREUR(RECHERCHEV($A$2;Plage_Feries;2;FAUX);"")
    .Formula = "=IFERROR(VLOOKUP(R2C1,Plage_Feries,2,FALSE),"""")"

    en D3: =SIERREUR(RECHERCHEV($A$3;Plage_Feries;2;FAUX);"")
    .Formula = "=IFERROR(VLOOKUP(R2C2,Plage_Feries,2,FALSE),"""")"

    en D4: =SIERREUR(RECHERCHEV($A$4;Plage_Feries;2;FAUX);"")
    .Formula = "=IFERROR(VLOOKUP(R2C3,Plage_Feries,2,FALSE),"""")"
    etc...

    Merci pour votre patience envers moi

    fasedan

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Regarde ce que j'avais proposé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With .Range("C2:C" & LastLig)
        .Formula = "=IFERROR(VLOOKUP(A2,Ferie,2,FALSE),"""")"       'On écrit ta formule en C2:Cxx
        .Value = .Value                                             'On fige les valeurs données par la formule
    End With
    enlève la ligne .value=.value et regarde les formules.

    PS: J'ai bien rencontré quelque part sur ce forum un petit quelque chose qui permet de donner les jours fériés.

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2008
    Messages : 59
    Points : 42
    Points
    42
    Par défaut Merci, mais...
    Merci de répondre mais là plus rien ne fonctionne.

    je récapitule pour rester sur la même longueur d'onde. Car je n'y comprend plus rien.

    Les dates des jours fériés sur plusieurs années sont sur la feuille "Feries" en colonne "A" et en colonnes "B" les noms des jours fériés: Jour de l'An, Lundi de Pâques, etc

    Exemple feuille "Feries" :

    ......A.......................B
    01/01/2010..........Jour de L'an
    05/04/2010..........Lundi de Pâques
    etc

    Sur la feuille "Prestations" les dates sur plusieurs années en "A", les Mois/Année en "B" et en "C" y faire figurer les noms des jours fériés par rapport à la date en "A" recherchées dans la feuille "Fériés" avec (RechercheV)
    Exemple feuille "Prestations" :

    ......A...............B.................C
    01/01/2010....Janv-2010......Jour de l'An
    02/01/2010....Janv-2010......
    etc..
    04/04/2010....Avri-2010.......
    05/04/2010....Avri-2010.......Lundi de Pâques
    06/04/2010....Avri-2010.......
    etc...

    en modifiant votre code :
    .Formula = "=IFERROR(VLOOKUP(A2,Feries,2,FALSE),"""")"
    par :
    .Formula = "=IFERROR(VLOOKUP(R2C1,Plage_Feries,2,FALSE),"""")"

    cela fonctionnais et m'écrivais la formule sur la feuille "Prestations" en C2 et me donnais bien pour le 01/01/2010 le Jour de l'An mais pas sur les lignes suivantes, j'avais aussi créer une plage de recherche sur la feuille "Feries" appelée : Plage-Feries

    Mais en laissant votre code tel quel, cela ne fonctionne pas.

    Encore merci pour votre incroyable patiente envers moi.
    fasedan

  8. #8
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Oh là là, je suis surpris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Formula = "=IFERROR(VLOOKUP(A2,Plage_Feries,2,FALSE),"""")"

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2008
    Messages : 59
    Points : 42
    Points
    42
    Par défaut Merci, cela fonctionne mais re-mai
    Cela fonctionne mais uniquement sur la celulle "C2" de la feuille "Prestation" et pas sur les celulles en dessous jusque la dernière trouvée.


    Je suis le remede contre la crise de nerfs.

    Mille merci.
    fasedan

  10. #10
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Plage_Feries est le nom de quelle plage?

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2008
    Messages : 59
    Points : 42
    Points
    42
    Par défaut
    Bonsoir,

    Voici une macro réalisée:

    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
    Sub Macro1()
    '
    ' Macro1 Macro
    '
     
    '
        Sheets("Feries").Select
        ActiveWindow.SmallScroll Down:=-12
        Range("A2:B151").Select
        ActiveWorkbook.Names.Add Name:="Plage_Feries", RefersToR1C1:= _
            "=Feries!R2C1:R151C2"
        Range("A2").Select
        Sheets("Prestations").Select
        Range("C2").Select
        ActiveCell.FormulaR1C1 = "=IFERROR(VLOOKUP(R2C1,Plage_Feries,2,FALSE),"""")"
        Range("C3").Select
    End Sub
    La plage "Plage_Feries" est sur la feuille "Feries" de A2 à B151

    un grand merci.
    bon amusement, fasedan

  12. #12
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    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
    Sub Macro1()
    Dim LastLig As Long
     
    Application.ScreenUpdating = False
    ThisWorkbook.Names.Add Name:="Plage_Feries", RefersToR1C1:="=Feries!R2C1:R151C2"
    Range("A2").Select
    With Worksheets("Prestations")
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        With .Range("C2:C" & LastLig)
            .FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-2],Plage_Feries,2,FALSE),"""")"
            'Identique à la ligne qui suit
            '.Formula = "=IFERROR(VLOOKUP(A2,Plage_Feries,2,FALSE),"""")"
            .Value = .Value
        End With
    End With
    End Sub
    Regarde la différence!

  13. #13
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2008
    Messages : 59
    Points : 42
    Points
    42
    Par défaut merci.
    J'ai du m'absenter quelques temps.

    Me revoilà pour vous remercier de votre attention que vous m'avez porté.
    Votre code fonctionne parfaitement.

    Merci à mercatog mais aussi à devellopez.com

    fasedan

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

Discussions similaires

  1. [Google Doc excel] Comparer deux feuilles
    Par Milias dans le forum Excel
    Réponses: 14
    Dernier message: 17/02/2015, 09h03
  2. [XL-2010] Code VBA pour comparer deux feuilles Excel
    Par sam013 dans le forum Excel
    Réponses: 1
    Dernier message: 13/08/2012, 14h53
  3. Comparer deux feuilles excel
    Par Haelle dans le forum Excel
    Réponses: 0
    Dernier message: 23/01/2012, 16h58
  4. comparer deux feuilles excel ss VBA
    Par washh dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/08/2008, 16h14
  5. Réponses: 9
    Dernier message: 27/06/2006, 16h55

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