VBA Afficher la variable d'une cellule positionnée plus loin

Bonjour,

Nouveau en VBA, mais de plus en plus passionné. Voilà ma question :

J'ai un tableau avec en rangs (A2:A4) 3 noms, en (B2:B4) des montants de location correspondant aux noms des locataires, en (D2:D4) les dates d'entrée des locataires. En E2=AUJOURDHUI(), et en F2=PETITE.VALEUR(D2:D4;NB.SI(D2:D4;"<"&AUJOURDHUI())+1) qui me renvoie la date de la prochaine location.

Dans VBA Project, j'ai entré ce code :

Private Sub Workbook_Open()

MsgBox "Prochaine location le : " & Sheets("Feuil1").[F2]

End Sub

qui me renvoie la date de la prochaine location à venir à l'ouverture du fichier Excel. Jusque là, ça fonctionne.

Ce que je voudrais, c'est rajouter dans ma MsgBox, à la suite de la date de la prochaine location, le nom du prochain locataire correspondant à la prochaine location. C'est à dire que si la prochaine location par rapport à la date=AUJOURDHUI() est D3=19/08/2016, le MsgBox me renvoie le nom qui lui correspond et qui se trouve en A3, c'est à dire DUBOIS.

Voilà. Tout seul je me sens bien seul. Merci pour votre aide à venir que j'attends avec impatience.

9forum-vba1.xlsx (8.60 Ko)

Bonjour,

Sous réserve que tu n'ais pas deux prochaines locations commençant en même temps, auquel cas seule la première de la liste remontera :

Option Explicit

Private Sub Workbook_Open()
Dim Sh As Worksheet
Dim Cel As Range
  Set Sh = Me.Sheets(1)
  Set Cel = Sh.Columns(4).Find(Sh.Range("F2"))
    If Not Cel Is Nothing Then
      MsgBox "Prochaine location le : " & Cel & Chr(10) & "Loué par : " & Cel.Offset(, -3)
    Else: MsgBox "Aucune location à venir"
    End If
  Set Cel = Nothing
  Set Sh = Nothing
End Sub

Maxime

Bonjour Darzou,

Merci pour ta réponse rapide. Je regarde tout ça ce week end et je te tiens au courant.

Bonne journée à toi

Re-bonjour,

Je me suis penché rapidement sur ton message dont je te remercie une nouvelle fois.

Une erreur d'exécution "13" apparaît lorsque toutes les dates sont inférieures à E2=AUJOURDHUI(). Et en ce cas, la cellule F2 (NEXT LOCATION) retourne une erreur=#NOMBRE! Ce qui a pour conséquence que la ligne de code: Else: MsgBox "Aucune location à venir" ne peut jamais s'afficher.

Je pense donc que ma fonction en F2=PETITE.VALEUR(D2:D4;NB.SI(D2:D4;"<"&AUJOURDHUI())+1) n'est pas adéquate!

Je joins une phtocopie d'écran de l'erreur retournée.

Pfff! Très compliqué tout ça, non?

capture darzou

Bonjour,

Tu crées la plage nommée "Date_Entrée" qui fait référence à

=DECALER(Feuil1!$D$2;;;NBVAL(Feuil1!$D:$D)-1)

En F2, tu places la formule :

=SIERREUR(PETITE.VALEUR(Date_Entrée;NB.SI(Date_Entrée;"<"&AUJOURDHUI())+1);"")

puis tu modifies ton code :

Private Sub Workbook_Open()
Dim Cel As Range
    With ThisWorkbook.Sheets(1)
        Set Cel = .Range("Date_Entrée").Find(.Range("F2"))
        If Not Cel Is Nothing Then
            MsgBox "Prochaine location le : " & Cel & Chr(10) & "Loué par : " & Cel.Offset(, -3)
        Else
            MsgBox "Aucune location à venir"
        End If
    End With
    Set Cel = Nothing
End Sub

A+

4forum-vba2.xlsm (14.97 Ko)
capture locataires

Bonsoir... et merci,

Ton fichier marche nickel... mais mon ignorance va de pair!

J'ai voulu appliquer ton code à ma liste de locataires et ça me retourne l'erreur jointe dans la PJ. Trop dur pour mon petit cerveau tout ça! Je comprends pas pourquoi je ne peux pas appliquer ton code à ma feuille!

Bien à toi! A vous!

4mes-locataires.xlsx (296.67 Ko)

Ton fichier en retour avec la plage nommée "Date_Entrée" et le code.

A+

5mes-locataires.xlsm (297.42 Ko)

Merci beaucoup! C'est nickel!

A vite... certainement

Rechercher des sujets similaires à "vba afficher variable positionnee loin"