Récupération de dates dans plusieurs cellules.

  • Initiateur de la discussion Initiateur de la discussion JPC
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

JPC

XLDnaute Nouveau
Bonsoir,
J'aimerai savoir par quel moyen on peut récupérer des dates au format date dans une colonne et les remettre dans une seule cellule avec par exemple une virgule comme séparateur.
Exemple : colonne avec 01/02/2014 25/3/2014 31/03/2014
et les récupérer dans une cellule sous cette forme :
01,25,31
Merci pour votre aide.
 
Re : Récupération de dates dans plusieurs cellules.

Re,

Si l'on veut que les noms soient triés alphabétiquement, utiliser la macro Quick sort :

Code:
Sub tri(a, gauc, droi)          ' Quick sort
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
    Do While a(g) < ref: g = g + 1: Loop
    Do While ref < a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      g = g + 1: d = d - 1
    End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub
Fichier (2).

A+
 

Pièces jointes

Dernière édition:
Re : Récupération de dates dans plusieurs cellules.

Re,

La fonction DECALER étant volatile, elle se recalcule à chaque modification du classeur.

Il en est donc de même du nom T et de toutes les formules qui utilisent ce nom.

Pour l'éviter on peut renommer le tableau T uniquement quand la colonne D de la feuille "Saisie" est modifiée :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [D:D]) Is Nothing Then _
  Range("A2:E" & Application.Match("zzz", [D:D])).Name = "T"
End Sub
Fichier (3).

A+
 

Pièces jointes

Dernière édition:
Re : Récupération de dates dans plusieurs cellules.

Re,

J'ai modifié la fonction Résidents pour les fichiers (2) et (3) :

Code:
Function Résidents$(t, dat, n&)
Dim d As Object, i&, a
t = t 'matrice, plus rapide
dat = Format(dat, "myyyy")
Set d = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(t)
  If Format(t(i, 3), "myyyy") = dat Then d(t(i, 4)) = ""
Next
If d.Count Then
  a = d.keys
  tri a, 0, UBound(a)
  If n <= d.Count Then Résidents = a(n - 1)
End If
End Function
A+
 
Re : Récupération de dates dans plusieurs cellules.

Re,

J'avais oublié de paramétrer le docteur (cellules B8 et J8), voir fichier (4).

L'ennui était que la fonction CELLULE est volatile, toutes les formules se recalculaient à chaque modification.

Il faut donc entrer manuellement (ou par macro) le nom du médecin en B8 et J8.

Bonne nuit.
 

Pièces jointes

Re : Récupération de dates dans plusieurs cellules.

Bonjour à tous


Question aux aminches croisés dans le fil 😉
J'aimerai savoir par quel moyen on peut récupérer des dates au format date dans une colonne et les remettre dans une seule cellule avec par exemple une virgule comme séparateur.
Exemple : colonne avec 01/02/2014 25/3/2014 31/03/2014
Pourquoi personne n'a évoqué Données/Convertir?
Bon bah je m'y colle alors ?
output_JPC.gif
Quoique c'est peut-être un peu tard, désormais ? 😉
 
Dernière édition:
Re : Récupération de dates dans plusieurs cellules.

Bonjour JPC, Jean-Marie, le forum,

Oui c'est un peu tard JM puisqu'on en est au fichier réel et que cette solution n'y est guère adaptable...

En passant juste un truc curieux, en tout cas chez moi sur Excel 2003.

Si l'on ouvre puis referme le fichier (4) il y a une invite d'enregistrement à la fermeture.

Pourtant il n'y a plus de fonctions volatiles dans la feuille, B8 et J8 contenant uniquement "JPC".

Alors j'ai effacé B8 et J8, enregistré le fichier, puis entré de nouveau "JPC", ce qui donne ce fichier (4 bis).

Et là plus d'invite à la fermeture du fichier !!!

Je regarderai plus tard si ce phénomène à lieu sur Excel 2010.

Edit : j'ai testé les fichiers (4) et (4 bis) sur Excel 2010 (après enregistrement sur le disque dur).

Le phénomène est le même que sur Excel 2003 : invite pour le fichier (4) et pas pour le (4 bis).

A+
 

Pièces jointes

Dernière édition:
Re : Récupération de dates dans plusieurs cellules.

Bonjour job75

C'est certes un peu tard pour JPC.
[opinion personnelle]
Mais heureusement, il y aura sans doute d'autres membres du forum novice en VBA comme JPC qui découvriront les vertus de Données/Convertir à la lecture de ce fil 😉
Données/Convertir qui ici répondent [presque] simplement à la question du message 1 telle qu'elle fut posée 😉
Mais cela ne réponds pas à ma question du pourquoi😉, car il me semble à priori que la solution avant formules ou VBA devrait être Données/Convertir quand il s'agit de séparer un chaine dans une cellule quand on ne maitrise pas encore formules et/ou VBA.
[/opinion personnelle]

PS1: A la relecture du fil, il est vrai que j'ai zappé la partie concaténation de la question.
(Quoique une fois effectué, le Données/Convertir on pouvait enquiller sur une formule de concaténation)
Désolé pour le dérangement 😉

PS2: Job75 : je testerai plus tard ton fichier sur Excel 2013 pour te dire si je constate le même phénomène, car là je dois filer sous la douche.
 
Dernière édition:
Re : Récupération de dates dans plusieurs cellules.

Re,

Encore une chose importante.

Dans les fichiers précédents, tous les noms (docteur, résidents) étaient en majuscule.

Si l'on y entre des minuscules, la casse est prise en compte, les noms seront considérés comme différents.

Si l'on veut que la casse soit ignorée utiliser :

Code:
Option Compare Text 'la casse est ignorée

Function Résidents$(t, doc$, dat, n&)
Dim d As Object, i&, a
t = t 'matrice, plus rapide
dat = Format(dat, "myyyy")
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = 1 'la casse est ignorée
For i = 2 To UBound(t)
  If t(i, 1) = doc And Format(t(i, 3), "myyyy") = dat Then d(t(i, 4)) = ""
Next
If d.Count Then
  a = d.keys
  tri a, 0, UBound(a)
  If n <= d.Count Then Résidents = a(n - 1)
End If
End Function
Fichier (5).

A+
 

Pièces jointes

Re : Récupération de dates dans plusieurs cellules.

Re,

Le phénomène constaté au post #22 sur les fichiers (4) et (4 bis) ne manque pas de m'intriguer.

J'ai pensé que cela provenait peut-être du fait que je travaillais sur un fichier .xls converti sur Excel 2003.

Mais il n'en est rien : sur Excel 2010 j'ai abouti aux fichiers joints à partir du fichier .xlsm d'origine.

Le phénomène est le même.

A+
 

Pièces jointes

Re : Récupération de dates dans plusieurs cellules.

Bonsoir à tous

job75
J'ai testé ton fichier sous Excel 2013 et j'ai aussi l’invite à la fermeture.
Je mets en commentaire tout le code VBA (et notamment la proc événementielle)
Je ferme le classeur
Je le ré-ouvre puis je le ferme et je n'ai plus l'invite
(Mais est-ce que cela est lié? je n'en sais rien)
 
Dernière édition:
Re : Récupération de dates dans plusieurs cellules.

Hello JM,

Merci d'avoir testé le fichier (4).

Sur Excel 2003 j'ai viré tout le VBA et toutes les formules, sans toucher à B8 et J8.

L'invite est toujours là, donc c'est uniquement ces cellules...

A+
 
Re : Récupération de dates dans plusieurs cellules.

Re

Job75
je viens de refaire un autre test
•J'ai ouvert le fichier puis supprimer tous les noms dans le Gestionnaire de Noms
puis Ouvrir/Fermer -> Invite présente
•J'ai ouvert le fichier puis supprimer tous les noms dans le Gestionnaire de Noms
supprimer tout le VBA
puis Ouvrir/Fermer -> Invite présente
•J'ai ouvert le fichier puis supprimer tous les noms dans le Gestionnaire de Noms
Enregistrer en *.xlsx
puis Ouvrir/Fermer -> Invite présente
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
117
Réponses
3
Affichages
284
Retour