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

Y compris Power BI, Power Query et toute autre question en lien avec Excel
s
stef75000
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 27 septembre 2011
Version d'Excel : 2002 sp-2

Message par stef75000 » 1 juillet 2016, 17:29

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.
Forum vba1.xlsx
(8.6 Kio) Téléchargé 8 fois
D
Darzou
Membre fidèle
Membre fidèle
Messages : 278
Inscrit le : 17 décembre 2010
Version d'Excel : 2010

Message par Darzou » 2 juillet 2016, 00:13

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
s
stef75000
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 27 septembre 2011
Version d'Excel : 2002 sp-2

Message par stef75000 » 2 juillet 2016, 10:40

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
s
stef75000
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 27 septembre 2011
Version d'Excel : 2002 sp-2

Message par stef75000 » 2 juillet 2016, 11:44

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.JPG
f
frangy
Passionné d'Excel
Passionné d'Excel
Messages : 4'337
Appréciation reçue : 1
Inscrit le : 19 novembre 2012
Version d'Excel : 2007 FR

Message par frangy » 2 juillet 2016, 12:45

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+
Forum vba2.xlsm
(14.97 Kio) Téléchargé 4 fois
s
stef75000
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 27 septembre 2011
Version d'Excel : 2002 sp-2

Message par stef75000 » 2 juillet 2016, 20:37

Capture locataires.JPG
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!
Mes locataires.xlsx
(296.67 Kio) Téléchargé 4 fois
f
frangy
Passionné d'Excel
Passionné d'Excel
Messages : 4'337
Appréciation reçue : 1
Inscrit le : 19 novembre 2012
Version d'Excel : 2007 FR

Message par frangy » 3 juillet 2016, 01:25

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

A+
Mes locataires.xlsm
(297.42 Kio) Téléchargé 5 fois
s
stef75000
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 27 septembre 2011
Version d'Excel : 2002 sp-2

Message par stef75000 » 5 juillet 2016, 11:14

Merci beaucoup! C'est nickel!
A vite... certainement
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message