VBA FIND une valeur (définit dans une cellule)

Bonjour à tous,

J'essaie de réaliser un extrait de calendrier dynamique en fonction d'un choix (cell AL5 et AL6 de l'onglet 1). Cependant, mon code ne fonctionne pas ici :

'définit la valeur cherchée, ici 92020 pour le début et 102020 pour la fin
DateDebutChoisie = Sheets("1").Range("AL5")
DateFinChoisie = Sheets("1").Range("AL6")

Quelqu'un aurait une idée s'il vous plait? Le fichier est en copie, et le code complet en module 1. ^^

merci d'avance ! beaucoup ! ^^

Bonjour,

Un essai ...

Sub OuvrirCalendrierChoisi()
Dim DateDebutChoisie As Long
Dim DateFinChoisie As Long
Dim ColDeb As Range
Dim ColFin As Range

    'nettoyer l'endroit où sera copié le calendrier
    With Sheets("1")
        .Activate
        With .Columns("A:AE")
            .ClearContents
            .ClearComments
            .Borders(xlDiagonalDown).LineStyle = xlNone
            .Borders(xlDiagonalUp).LineStyle = xlNone
            .Borders(xlEdgeLeft).LineStyle = xlNone
            .Borders(xlEdgeTop).LineStyle = xlNone
            .Borders(xlEdgeBottom).LineStyle = xlNone
            .Borders(xlEdgeRight).LineStyle = xlNone
            .Borders(xlInsideVertical).LineStyle = xlNone
            .Borders(xlInsideHorizontal).LineStyle = xlNone
            .HorizontalAlignment = xlGeneral
            .VerticalAlignment = xlCenter
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            With .Interior
                .Pattern = xlNone
                .TintAndShade = 0
                .PatternTintAndShade = 0
            End With
            .UnMerge
        End With

    'définit la valeur cherchée, ici 92020 pour le début et 102020 pour la fin
    DateDebutChoisie = .Range("AL5")
    DateFinChoisie = .Range("AL6")
    End With

    'dans l'onglet Calendrier, trouve 92020
    With Sheets("Calendrier")
        .Activate
        Set ColDeb = .Rows(2).Find(what:=DateDebutChoisie, LookIn:=xlValues)
        If Not ColDeb Is Nothing Then col = ColDeb.Select

        'si 92020 trouvé alors redimensionne et nomme la plage trouvée "DateDeDebut"
        Set DateDeDebut = .Cells(3, ColDeb.Column).Resize(100, 7)
        Names.Add Name:="DateDeDebut", RefersToR1C1:=DateDeDebut

        'dans l'onglet Calendrier, trouve 102020
        Set ColFin = .Rows(2).Find(what:=DateFinChoisie, LookIn:=xlValues)
        If Not ColFin Is Nothing Then col = ColFin.Select

        'si 102020 trouvé alors redimensionne et nomme la plage trouvée "DateDeFin"
        Set DateDeFin = .Cells(3, ColFin.Column).Resize(100, 7)
        Names.Add Name:="DateDeFin", RefersToR1C1:=DateDeFin
    End With

    Sheets("1").Activate

    'par conséquent copie colle les zones correspondantes
    'Début
    Range("DateDeDebut").Copy Sheets("1").Range("I1")

    'Fin
    Range("DateDeFin").Copy Sheets("1").Range("Q1")

    Range("AL5").Select
End Sub

ric

Bonjour Ric,

Le code je pense fonctionne :) à une petite chose près :

2020 08 21 13 44 57 microsoft visual basic pour applications calendrier excel 2021 xlsm execution

aurais-tu une idée supplémentaire ? :D

merci à toi,

Bonjour,

Je n'ai pas cette erreur sur ma machine > je viens de tester à nouveau ...

Au moment où l'erreur survient > arrête le traitement > va voir dans le menu "Formules" > Gestionnaire de noms > est-ce que "DateDeDebut" existe bien ? > ainsi que "DateDeFin" ??

Est-ce cela fonctionne correctement avec ce fichier ??

Dans ton fichier de travail > feuille "Calendrier" > est-ce que tu as bien en Q2 (=CONCATENER(Q3;Q1) et Y2 (=CONCATENER(Y3;Y1)) ?

Ceci afin que la recherche aboutisse (trouve la chose) ...

ric

bonjour,

il me semble qu'il est possible d'avoir cette erreur dans le cas où la date n'est pas trouvée, dans ce cas colfin est nothing et l'instruction colfin.column renvoie le message d'erreur indiqué (enfin je pense, car je n'ai pas testé).

Bonjour à tous,

@h2so4 >> je crois que son fichier n'est pas complété et qu'il n'a pas toutes les formules en ligne 2 > Exemples : Q2 (=CONCATENER(Q3;Q1) et Y2 (=CONCATENER(Y3;Y1)) ...

SAlut à tous,

Je confirme ce qu'a dis Ric .. "@h2so4 >> je crois que son fichier n'est pas complété et qu'il n'a pas toutes les formules en ligne 2 > Exemples : Q2 (=CONCATENER(Q3;Q1) et Y2 (=CONCATENER(Y3;Y1)) …" XD

et oui y'avais pas le mois de fin… la honte désolé Ric et un grand merci à toi ;) Merci à H2so4 aussi !

C'est totalement résolue ^^

Bonjour à tous,

N'oublie pas de copier cette formule pour tous les mois afin que la recherche fonctionne en demandant différentes dates de l'année ...

ric

Oui c'est bien noté ^^ !

ric

Rechercher des sujets similaires à "vba find valeur definit"