vba trouver la date la plus ancienne

zayab

XLDnaute Junior
Bonjour
dans un tableau, dont la taille peut changer, qui débute en a5 j'ai besoin que la date la plus ancienne en colonne b s'affiche dans la cellule b2. (au dessus)
en vba svp
Merci
 

Jacky67

XLDnaute Barbatruc
Bonjour
dans un tableau, dont la taille peut changer, qui débute en a5 j'ai besoin que la date la plus ancienne en colonne b s'affiche dans la cellule b2. (au dessus)
en vba svp
Merci
Bonjour,

Sans plus d'explication et sans classeur...
Cela pourrait ressembler à ceci
VB:
Sub test()
Dim Derlg&
With Feuil1  'adapter le code name de la feuille
  Derlg = .Cells(.Rows.Count, "b").End(xlUp).Row
  .[B2] = IIf(Derlg > 4, Application.Min(.Range("b5:b" & Derlg)), "")
End With
End Sub
**Deux "." (point) se sont perdu en cours de route :(
 
Dernière édition:

Jacky67

XLDnaute Barbatruc
par contre pourquoi iif
.[B2] = IIf(Derlg > 4, Application.Min(.Range("b5:b"
Re..
Il était écrit que les données commençaient à partir de la ligne 5
Admettons qu'aucune date n'est présente en colonne B ou que celles-ci soient supprimées
Dans ce cas, le rôle de "iif " est de verifier cela.
Soit il y a calcul si Derlg et plus grand que 4, soit b2 sera vide
C'est l'équivalent de
VB:
Sub test()
Dim Derlg&
With Feuil1  'adapter le code name de la feuille
  Derlg = .Cells(.Rows.Count, "b").End(xlUp).Row
  If Derlg > 4 Then
    .[b2] = Application.Min(.Range("b5:b" & Derlg))
  Else
    .[b2] = ""
  End If
End With
End Sub
Un petit coup de F1 sur "IIF" donne aussi des explications sur le fonctionnement
Voila......;)
 
Dernière édition:

zayab

XLDnaute Junior
Re..
Il était écrit que les données commençaient à partir de la ligne 5
Admettons qu'aucune date n'est présente en colonne B ou que celles-ci soient supprimées
Dans ce cas, le rôle de "iif " est de verifier cela.
Soit il y a calcul si Derlg et plus grand que 4, soit b2 sera vide
C'est l'équivalent de
VB:
Sub test()
Dim Derlg&
With Feuil1  'adapter le code name de la feuille
  Derlg = .Cells(.Rows.Count, "b").End(xlUp).Row
  If Derlg > 4 Then
    [b2] = Application.Min(.Range("b5:b" & Derlg))
  Else
    [b2] = ""
  End If
End With
End Sub
Un petit coup de F1 sur "IIF" donne aussi des explications sur le fonctionnement
Voila......;)

encore une decouverte mercii
 

Jacky67

XLDnaute Barbatruc
ces 2"." là ? .Cells(.
je ne les ai pas mis et ca marche:)
Oui, ce sont bien ces 2 là.
Oui cela fonctionne sans, à condition que la feuille active soit la feuille concernée
Si la feuille active n'est pas la feuille concernée ou si la feuille active est une feuille graphique, il risque d'y avoir des surprises.
Toutes les commandes précédées d'un point font référence à "'With feuill1"-----"End With" sans avoir à écrire par exemple
Sheets("feuil1"). [b2]=.....
 
Dernière édition:

Jacky67

XLDnaute Barbatruc
Bonsoir le fil, le forum

Pas mieux ou presque ;)
VB:
Sub LeFormatEnPlus()
[B2] = CDate(WorksheetFunction.Min([B5:B1600]))
End Sub
Hello JM
Certes, mais c'est tout de même un peu minimaliste
Pas de plage vide sinon le résultat est un peu bizarre
Et obligation au lancement de la macro que ce soit la bonne feuille qui est active.
Je pense que zayab a voulu comprendre, et je crois qu'il a compris.:)

**Mince alors , ma date en B1655 n'est pas prise en compte :mad:
 
Dernière édition:

zayab

XLDnaute Junior
Merci les amis
Staple1600 ta solution m'aurait bien plu étant plus proche de ce que je cherchais mais j’avoue que jacky n'avait pas tord: je voulais comprendre et comme j'ai comprendu me revoilà...
J'ai avancé depuis dans un mur..., un muret..., un caillou (pendant 4h00 quand même).:confused:
Je passe les tentatives avec les Dépassement de capacité (Erreur 6) les CSng et autres CByte

Alors après extraction des données une première macro retravaille et transmet les données sur un tableau qui en s'ouvrant présente une plage (B2:L2) que l'utilisateur renseignera. Par défaut cette plage renseigne la date la plus ancienne et la plus lointaine.
De boites de dialogues cadrent les libertés qu'un utilisateur .........en manque de sommeil :cool: pourrait tenter .
Ors ces boites se déclenchent bikoze abug

Mon besoin est que la plage [date début + heure début à date fin + heure fin] extraite à l'ouverture par la Private Sub Worksheet_Activate() ne renseigne que les dates seules (sans l'heure) et que les heures seules soient renseignées à coté (sans la date).

Pour la Sub Liste() ce n'est pas nécessaire puisque les utilisateurs renseignent à la mano (et s'ils renseignent une date dans la champs des heures qu'ils changent de boulot!!)o_O

voir petit fichier qui va bien
d'avance merci
 

Pièces jointes

  • ancienne date 2.0.xlsm
    20 KB · Affichages: 51

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

Merci les amis
Staple1600 ta solution m'aurait bien plu étant plus proche de ce que je cherchais mais j’avoue que jacky n'avait pas tord: je voulais comprendre et comme j'ai comprendu me revoilà...
J'ai avancé depuis dans un mur..., un muret..., un caillou (pendant 4h00 quand même).:confused:
Yoda a dit: "Le plus grand des Maîtres, l'échec être"
Et moi, ma philosophie sur XLD, c'est d'inciter le demandeur à mettre les mains dans le cambouis pour résoudre sa question.
Mes différents posts sur XLD sont parfois des solutions, parfois des pistes à explorer, voire des digressions.
Au final, c'est au demandeur d'y trouver ... ou pas... de quoi nourrir sa curiosité ;)
(tant mieux si au passage, cela aide à résoudre une question... ou pas.)
 

Discussions similaires

Réponses
21
Affichages
391

Statistiques des forums

Discussions
312 176
Messages
2 085 961
Membres
103 066
dernier inscrit
bobfils