Excel VBA atteindre une cellule qui contient un mois

Azerty -  
NICK337 Messages postés 23 Statut Membre -

Bonjour,

J'ai un tableau A5:J5000. La colonne F est dédiée aux dates (JJ/MM/AA). Je rentre en F1 une date pour obtenir un total facturé sur cette date. Jusqu'ici pas de problème, j'ai bien mon total. La date en F1 se présente également en JJ/MM/AA.

Je cherche une formule vba qui me permettrait d'atteindre, dans mon tableau A5:J5000, la première ligne qui dans la colonne F contient le mois de la cellule F1.

Cela me permettrait d'aller plus vite aux lignes qui concernent le mois que je cherche, sans à perdre du temps avec l'ascenseur...

Auriez-vous une idée ? Je ne trouve pas ! Merci


Windows / Firefox 119.0

2 réponses

  1. NonoM45 Messages postés 1025 Date d'inscription   Statut Membre Dernière intervention   5
     

    Bonjour Azerty,

    Pourquoi ne pas utiliser quelque chose de natif sur Excel... le Filtre !?

    Sinon, voici un code qui pourrait convenir, je pense.

    Private Sub Worksheet_Change(ByVal Target As Range)
      Dim dLig As Long, Lig As Long
      If Target.Address = "$F$1" Then
        If Target.Value = "" Then Exit Sub
        dLig = Range("F" & Rows.Count).End(xlUp).Row
        For Lig = 5 To dLig
          If Range("F" & Lig) <> "" Then
            If Month(Range("F" & Lig)) = Month(Range("F1")) Then
              Range("F" & Lig).Select: Exit For
            End If
          End If
        Next Lig
      End If
    End Sub
    

    A+

    0
  2. NICK337 Messages postés 23 Statut Membre
     

    Bonjour. Je peux vous aider à créer une macro VBA pour cela. Voici un exemple de code qui pourrait fonctionner pour votre situation :

    Sub TrouverDate()
        Dim ws As Worksheet
        Dim rng As Range
        Dim celluleDate As Range
        Dim premiereLigne As Range
    
        ' Définir la feuille de calcul
        Set ws = ThisWorkbook.Sheets("Nom_de_votre_feuille")
    
        ' Définir la plage de recherche
        Set rng = ws.Range("F5:F5000")
    
        ' Définir la cellule contenant la date
        Set celluleDate = ws.Range("F1")
    
        ' Chercher la première ligne du mois
        For Each cell In rng
            If Month(cell.Value) = Month(celluleDate.Value) And Year(cell.Value) = Year(celluleDate.Value) Then
                Set premiereLigne = cell
                Exit For
            End If
        Next cell
    
        ' Si une ligne correspondante est trouvée, sélectionnez-la
        If Not premiereLigne Is Nothing Then
            premiereLigne.Select
        Else
            MsgBox "Aucune ligne trouvée pour le mois de " & Format(celluleDate.Value, "mmmm yyyy")
        End If
    End Sub
    

    N’oubliez pas de remplacer"Nom_de_votre_feuille"par le nom de votre feuille de calcul. Cette macro parcourt chaque cellule dans la plage F5:F5000 et compare le mois et l’année de la cellule avec le mois et l’année de la date en F1. Lorsqu’elle trouve une correspondance, elle sélectionne cette cellule et arrête la recherche. Si aucune correspondance n’est trouvée, elle affiche un message indiquant qu’aucune ligne n’a été trouvée pour ce mois.

    Veuillez noter que cette macro ne prend pas en compte les dates vides ou non valides dans la plage de recherche. Vous devrez peut-être ajouter une gestion d’erreur supplémentaire en fonction de vos données. Cordialement

    0