Excel VBA atteindre une cellule qui contient un mois

Azerty - 26 oct. 2023 à 16:12
NICK337 Messages postés 9 Date d'inscription vendredi 3 juillet 2015 Statut Membre Dernière intervention 13 décembre 2023 - 7 nov. 2023 à 23:21

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

A voir également:

2 réponses

NonoM45 Messages postés 268 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 21 mars 2024
Modifié le 27 oct. 2023 à 03:33

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
NICK337 Messages postés 9 Date d'inscription vendredi 3 juillet 2015 Statut Membre Dernière intervention 13 décembre 2023
7 nov. 2023 à 23:21

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