Dates avec Excel

Résolu/Fermé
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 - 25 mars 2010 à 12:30
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 - 13 avril 2010 à 14:41
Salut,

j'ai fait une impression écran de ce que j'ai au départ et de ce que j'aimerais obtenir à la fin.
http://www.cijoint.fr/cjlink.php?file=cj201003/cijuTLBxYg.jpg

pour expliquer un peu :
j'aimerai trier les dates. mais la fonction "trier" trie par année.
moi, j'aimerais que cela se fasse par mois et par jour, c'est-à-dire que ça devrait les classer dans l'ordre chronologique des jours dans l'année, comme un calendrier.

sur la feuille 2, je reprend les données de la feuille 1 dans laquelle des lignes ont été en partie fusionnées.
le problème c'est que lorsque je récupère les données de la feuille 1 dans la 2, où je ne veux plus de cellules fusionnées, j'ai des "0" qui apparaissent.

j'espère avoir été clair.
merci pour votre aide.
A voir également:

29 réponses

Bonjour,

C'est normal, tu ne peux pas trier avec des lignes fusionnées ! Il n'y a pas d'autre solution que de repenser le tableau sans cellules fusionnées.

Cordialement,
Migou
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
25 mars 2010 à 15:14
Salut et merci de m'aider Migou ^^

comme tu peux le voir, quand je récupère les données de la feuille 1, les données apparaissent bien, seulement avec quelques problèmes. mais je peux trier car dans la feuille 2 il n'y a pas de cellules fusionnées.
pour reprendre l'exemple donné, avec les cellules fusionnées, Excel voit en A1 le nom "Dupond" et rien en A2 et A3.
j'ai réussi avec une fonction "si" à éliminer le "0" de A2. mais s'il y a plus de 2 personnes avec le même nom, il me reste des "0", comme ici en A3.
il faudrait une fonction qui récupère le contenu de la première cellule non vide située au-dessus de la cellule.
si(rien en A2, alors : inscrire ce qu'il y a en A1). c'est ce que j'ai fait.
seulement je ne vais pas mettre 10 "si" imbriqués! il n'y aurait pas une fonction qui réalise cela? je pense que ça doit exister!?

et pour ce qui est du tri des dates en fonction du jour et du mois au lieu de l'année, tu sais ce qu'il faut faire?

merci encore
0
hubertaaz Messages postés 8188 Date d'inscription vendredi 12 mai 2006 Statut Contributeur sécurité Dernière intervention 22 janvier 2014 1 596
25 mars 2010 à 15:29
Bonjour tibouuh,

Est-ce que tu essayes de te confectionner un agenda pour les anniversaires?

Si c'est le cas, j'ai ce qu'il te faut sur une seule feuille avec un tri exécuté par makro.

Cordialement
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
25 mars 2010 à 15:33
ouais c'est un peu ce que j'essaie de faire!

ne connaissant pas les macros, j'ai essayé de le faire via le tableur. je me doutais bien qu'avec les macros c'est possible.

je me suis acheté un bouquin sur Excel (Excel 2007 & VBA pour les Nuls!!!) pour apprendre justement, mais j'en suis pas encore aux macros.

si tu peux me dire comment faire et si c'est pas trop compliqué?!
merci hubertaaz
0
hubertaaz Messages postés 8188 Date d'inscription vendredi 12 mai 2006 Statut Contributeur sécurité Dernière intervention 22 janvier 2014 1 596
25 mars 2010 à 15:47
En fait je n'y connais pas grand chose en makro mais j'ai péché un fichier excel fait par un intervenant régulier sur CCM dont le nom m'échappe pour l'instant.

Je le trouve super pour gérer les anniversaires de la famille. Si ça t'intéresse, voici un lien pour le télécharger : http://www.cijoint.fr/cjlink.php?file=cj201003/cij5RPd6x2.xls

Je suis à ta disposition si tu souhaites des explications complémentaires.

@+
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
25 mars 2010 à 18:24
je savais pas comment activer la macro, mais j'ai trouvé en autorisant le certificat.
en revanche, je n'ai pas accès aux codes VBA. ça me demande un mot de passe?! c'est un mot de passe qui vient du fichier Excel ou qui vient de moi?
j'ai testé le tableau et ça a l'air de marché.
j'aimerais bien quand même pouvoir visualiser le code et essayer de faire des modifs, si jamais j'y arrive...!
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
25 mars 2010 à 18:33
non c'est bon j'ai trouvé le mot de passe.
j'avais pas vu qu'il était indiqué dans l'encadré! -_-'
je comprenais pas cette phrase au départ.
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
25 mars 2010 à 18:41
j'ai réussi à retirer la protection pour pouvoir modifier le document à ma guise, mais par contre je ne trouve pas le code?
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
25 mars 2010 à 18:46
c'est pas que ça le code quand même?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Raymond PENTIER Messages postés 58395 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 25 avril 2024 17 095
26 mars 2010 à 02:11
Bonjour.
On ne peut et on ne doit pas fabriquer un tableau à sa fantaisie, et seulement ensuite se demander comment faire pour l'exploiter.
C'est dès la conception de la base de données, puisque c'en est une, qu'il faut savoir l'usage qu'on va en faire et donc prévoir la structure nécessaire.
Première chose, appliquer le conseil de Migou, et recopier Dupont en A2 et A3.
Deuxième chose, mettre le mois en colonne C avec la formule =MOIS(C1)
et le jour en colonne D avec la formule =JOUR(C1).
Troisième chose, faire un tri personnalisé avec Colonne A en niveau 1, Colonne D en niveau 2 et Colonne E en niveau 3.
https://www.cjoint.com/?dAcfChASBn
0
hubertaaz Messages postés 8188 Date d'inscription vendredi 12 mai 2006 Statut Contributeur sécurité Dernière intervention 22 janvier 2014 1 596
26 mars 2010 à 09:28
Bonjour Raymond,

"On ne peut et on ne doit pas fabriquer un tableau à sa fantaisie, et seulement ensuite se demander comment faire pour l'exploiter. "

Ce tableau n'a pas été créé mais était "préfabriqué" et s'adapte particulièrement pour gérer les anniversaires comme mentionné ici : https://forums.commentcamarche.net/forum/affich-17135055-dates-avec-excel#3

Si ce n'est pas le résultat recherché alors il faut bien entendu le construire de toutes pièces.

Pour tibouuh, je te laisse poursuivre avec Raymond qui est nettement plus compétent que moi en la matière.

@+
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647 > hubertaaz Messages postés 8188 Date d'inscription vendredi 12 mai 2006 Statut Contributeur sécurité Dernière intervention 22 janvier 2014
26 mars 2010 à 11:45
Pour tibouuh, je te laisse poursuivre avec Raymond qui est nettement plus compétent que moi en la matière.
OK, pas de problème.
merci pour ton aide ;-)
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
26 mars 2010 à 11:59
Salut Raymond et merci de venir apporter ta pierre à l'édifice.

On ne peut et on ne doit pas fabriquer un tableau à sa fantaisie, et seulement ensuite se demander comment faire pour l'exploiter.
oui je sais...!
mais pour ma défense (lol ^^), je connais Excel (je croyais déjà pas mal le connaître d'ailleurs) mais j'ai encore énormément de choses à apprendre. c'est pour cela que j'essaie de faire évoluer ce tableau.
à la base, c'était un simple tableau avec les coordonnées des personnes et trié par ordre alphabétique. donc aucun problème.
je l'ai ensuite étoffé avec les dates d'anniversaire, pour ne pas les oublier!
d'où maintenant mon idée de faire un classement par date qui serait bien plus simple pour ne pas passer à côté d'un anniversaire.
après qu'il y ait des macros ou pas, peu m'importe. il faudra juste m'expliquer comment faire. ^^

j'aime bien le tableau fourni par hubertaaz (https://forums.commentcamarche.net/forum/affich-17135055-dates-avec-excel#5) avec des colonnes que je trouve très utiles (les colonnes D, F et H) et le code couleur.
pour la présentation, je préfère le mien. mais rien ne m'empêchera de garder une feuille avec mon tableau pour les données et d'avoir sur une autre le tableau de tri des anniversaires avec les infos supplémentaires des colonnes intéressantes et le code couleur.

merci pour ton aide Raymond, je suis tout ouï!
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
30 mars 2010 à 18:43
Salut,

j'ai plusieurs questions concernant le tableau fourni par hubertaaz (https://forums.commentcamarche.net/forum/affich-17135055-dates-avec-excel#5)

comment on fait pour retirer définitivement la protection de la feuille?
parce qu'à chaque fois je dois taper le mot de passe pour faire des modifs.

j'ai essayé de faire des modifs. certaines sans problème, et d'autres ben après ça marche plus.
notamment lorsque je supprime la colonne E, dans laquelle il n'y a aucune info!
comment savoir ce qui est utilisé et donc utile, pour le code VBA je suppose?

merci de votre aide.
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
30 mars 2010 à 20:24
bon je progresse tout seul...! petit à petit on devient moins petit! lol

j'ai trouvé le code :

Private Sub Workbook_Open()
'Filtre dans un ordre croissant les dates d'Anniversaire
Worksheets(1).Unprotect Password:="OPEN"
If Range("D3") = "" Then
Worksheets(1).Protect Password:="OPEN"
Exit Sub
Else
Range("H36").Select
Do While ActiveCell.Value = ""
ActiveCell.Offset(-1, 0).Select
Loop
Range("A2", ActiveCell).Select
Selection.AutoFilter
Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A2").Select
Selection.AutoFilter
Worksheets(1).Protect Password:="OPEN"
End If
End Sub


quelqu'un saurait me l'expliquer?
merci encore pour votre aide
0
Raymond PENTIER Messages postés 58395 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 25 avril 2024 17 095
30 mars 2010 à 20:46
Je suis désolé, mais mon aide éventuelle se limite aux fonctions usuelles d'Excel : Je suis ignare en matière de VBA ; alors dès qu'on parle "macro", je suis contraint de me retirer ...
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
31 mars 2010 à 11:03
c'est pas grave ^^
merci pour ton aide ;-)
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
Modifié par tompols le 30/03/2010 à 21:27
bonsoir tibouuh, Raymond, hubertaaz,
voici l'explication du code :
Private Sub Workbook_Open() 'procédure évenementielle qui se déclenche à l'ouverture du classeur  
Worksheets(1).Unprotect Password:="OPEN"  'ôte la protection de la feuille  
If Range("D3") = "" Then 'si la cellule D3 est vide alors  
Worksheets(1).Protect Password:="OPEN" 'ôter la protection de la feuille  
Exit Sub 'sortir de la procédure (fin)  
Else 'sinon  
Range("H36").Select 'selection de la cellule H36  
Do While ActiveCell.Value = "" 'tant que la cellule active n'est pas vide  
ActiveCell.Offset(-1, 0).Select 'remonter de une cellule  
Loop 'fin du tant que  
Range("A2", ActiveCell).Select 'selection de la zone A2:H36  
Selection.AutoFilter 'activation du filtre automatique  
Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Header:=xlGuess, _  
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _  
DataOption1:=xlSortNormal 'tri du tableau en fonction de la colonne D (titre en D2, tri ascendant))  
Range("A2").Select 'selection de la cellule Dé  
Selection.AutoFilter 'desactivation du filtre automatique  
Worksheets(1).Protect Password:="OPEN" 'protection de la feuille  
End If 'fin du "si"  
End Sub  'fin procédure 

en espérant avoir été clair :)
On entend par une belle solution, la solution simple et facile d'un problème difficile et compliqué
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
31 mars 2010 à 11:05
salut et merci pour ces explications tompols
je vais regarder ça et voir si je comprends tout.
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
30 mars 2010 à 21:20
Salut,

Je connais bien ce code pour l'avoir écrit dans un fichier Anniversaire.
chaque partie du code est expliqué après une apostrophe

Private Sub Workbook_Open()
'Déprotection du fichier avec mot de passe OPEN à l'ouverture pour permettre le filtrage
Worksheets(1).Unprotect Password:="OPEN"
'contrôle le nombre de ligne à filtrer
If Range("D3") = "" Then
's'il y a moins de deux lignes on reprotége le fichier
'et on sort de la procédure
Worksheets(1).Protect Password:="OPEN"
Exit Sub
'sinon
Else
'on recherche avec une boucle la dernière ligne non vide colonne H
'il est possible d'écrire cette partie par ce code
'Cells(16384, 8).End(xlUp).Select
'ou celui ci
'Range("H16384").End(xlUp).Select
Range("H36").Select
Do While ActiveCell.Value = ""
ActiveCell.Offset(-1, 0).Select
Loop
'a partir de la dernière ligne non vide on sélectionne jusqu'a la cellule A2
Range("A2", ActiveCell).Select
'on installe le filtre et on trie en ordre croissant la colonne D
Selection.AutoFilter
Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'on sélectionne la cellule A2 pour désactiver la sélection
Range("A2").Select
'on désactive le filtre
Selection.AutoFilter
'on reprotége le fichier avec mot de passe OPEN
Worksheets(1).Protect Password:="OPEN"
End If
End Sub
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
31 mars 2010 à 11:12
Salut Mike,

j'ai la version sans les explications, donc je comprenais pas tout ou j'interprétais mal!

je vais regarder ce code de plus près pour bien le comprendre.

j'ai déjà une question concernant la protection de la feuille.
j'ai essayé de la retirer en supprimant les lignes relatives à la protection mais j'ai eu un message d'erreur à l'ouverture suivante du fichier.
j'ai dû trop en retirer ou pas assez!
tu peux me dire ce que je dois faire pour ne pas avoir à taper le mot de passe à chaque fois pour déprotéger la feuille stp?!
je pourrais toujours la remettre par la suite de toute façon.

merci.
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié par Mike-31 le 31/03/2010 à 21:47
Re,

Es ce que tu travailles sur mon fichier Anniversaire
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
31 mars 2010 à 17:17
je travaille sur le fichier fourni par hubertaaz
il y a le lien dans le message 5
0
Salut,

Pour trier tu ne dois pas fusionner les cellules dans le haut de ta feuille le nom Dupond est inscrit 1 fois ou si tu tries par prénom car tu n'a que ça a trié ça ira.

Ce que tu as sur la feuille 2 tu as copié la feuille 1 il faut sélectionner la colonne C Format Date et tu choisi ton format jj mmmm

Ensuite pour trier données trier
si tu as des noms différents 2 lé de trie par colonne a et puis colonne B

Si tu as mis des titres a tes colonnes et que tu as sélectionné les titres n'oublies pas de dire oui a "Ma plage de donnée a une ligne de titre

J'espère avoir été clair

salut
0
si le format date que tu souhaites n'est pas dans format date fais format personnalisé et mets jj mmmm
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
31 mars 2010 à 18:27
Salut maya02,

J'espère avoir été clair
désolé, j'ai pas vraiment compris tout ce que tu as dit.

mais là tu parles d'un fichier Excel simple, sans macro?
en fait j'aime bien le fichier de Mike, dont je suis plutôt parti sur celui-ci maintenant. et je vais l'arranger à ma sauce.
il faut juste qu'on m'explique pour que je comprenne et que je puisse faire des modifs sans faire de bêtises! ^^
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
31 mars 2010 à 19:58
re,

j'ai avancé sur ton fichier Mike.

j'ai réussi à retirer la protection par mot de passe sur la feuille et j'ai simplifié le code (la vérif s'il y a moins de ligne n'est pas nécessaire vu que mon tableau sera toujours rempli; je garde néanmoins le code parce qu'il pourra m'être utile). et j'ai supprimé les 2 colonnes que tu avais mises, pour faire office de séparation je suppose.
voilà ce que j'ai maintenant :

Private Sub Workbook_Open()
'on recherche avec une boucle la dernière ligne non vide de la colonne F
Range("F30").Select
Do While ActiveCell.Value = ""
ActiveCell.Offset(-1, 0).Select
Loop
'à partir de la dernière ligne non vide
'on sélectionne jusqu'à la cellule A2
Range("A2", ActiveCell).Select
'on installe le filtre et on trie en ordre croissant la colonne D
Selection.AutoFilter
Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

'on sélectionne la cellule A2 pour désactiver la sélection
Range("A2").Select
'on désactive le filtre
Selection.AutoFilter
End Sub



la cellule H36 que tu avais choisie est purement arbitraire, je parle du numéro de ligne? je l'ai changé pour qu'Excel ait moins de calcul à faire!
je comprends le code mais pas la partie en gras. tu peux me dire ce que chaque fonction fait stp.

autre chose :
j'ai modifié aussi la formule que tu avais mise dans la colonne H.
pour rappel :
=SI(C2<>"";SI(D2-AUJOURDHUI()=0;"C'est l' Anniversaire de "&B2;"Anniversaire de "&B2&" dans "&SI(DATEDIF(AUJOURDHUI();D2;"Y")=0;" ";(DATEDIF(AUJOURDHUI();D2;"Y")&SI(DATEDIF(AUJOURDHUI();D2;"Y")>1;" ans, ";" an, ")))&SI(DATEDIF(AUJOURDHUI();D2;"M")=0;"";DATEDIF(AUJOURDHUI();D2;"M")&" mois, ")&SI(DATEDIF(AUJOURDHUI();D2;"D")=0;" ";(DATEDIF(AUJOURDHUI();D2;"MD")&SI(DATEDIF(AUJOURDHUI();D2;"D")>1;" jours ";" jour "))));"")

j'ai supprimé la partie en gras. si je ne me suis pas trompé, elle ne sert à rien parce que jamais elle n'affiche le nombre d'années. et elle n'a pas à l'afficher d'ailleurs.
dans cette formule (et dans celle de la colonne F), je ne comprends pas ce que viennent faire les "Y", "M", "D" (et "Y", "YM", "MD" pour la F)?
je comprends que ça représente l'année, le mois et le jour.

en revanche, Excel demande toujours le mot de passe avant de dévoiler le code VBA. comment faire pour ne plus l'avoir?
et aussi, je dois toujours activer la macro. ça n'est pas possible qu'elle s'active d'office. mais juste pour ce classeur.

et enfin, j'ai un petit problème dans l'ordre des anniversaires à venir. j'ai fait un test avec plusieurs anniversaires dont un est aujourd'hui, l'autre dans 6 jours et d'autres dans longtemps. et celui dans 6 jours est positionné avant celui d'aujourd'hui. j'ai peut-être trop supprimé, mais je ne vois pas ce qui peut avoir une influence là-dessus.

je crois que je n'ai rien oublié.
merci encore pour ton aide parce que j'en ai bien besoin.
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié par Mike-31 le 1/04/2010 à 13:11
Re,

C'est bien mon fichier, je l'ai créé sur Excel 2000 il y a quelques année, il est possible qu'à l'époque j'ai écrit des formules avec des lignes inutiles que je contrôlerai, effectivement en H on n'a pas a rechercher les année vu que l'anniversaire sera dans l'année à venir.

Pour supprimer le mot de passe, tu ne me donnes pas ta version Excel ? il faut enregistrer sous et dans les options Excel supprimer le mot de passe
Pour "Y" représente le nombre d'année compléte, "M" les mois , "D" les jours , "YM" le nombre de mois dans l'année incompléte, "MD" le nombre de jour d'un mois incomplé

Le problème du tri dit venir du fait que tu as supprimer des colonnes et sans en tenir compte dans le code

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
1 avril 2010 à 11:54
Salut,

ouais je suis bête! j'ai oublié de le préciser. je travaille sur Excel 2007.

en fait pour supprimer le mot de passe, dans Microsoft Visual Basic, il faut aller dans le menu "Outils", puis "Propriétés de VBAProject...".
dans la fenêtre qui s'ouvre, dans l'onglet "Protection", il faut décocher la ligne "Verrouiller le projet pour l'affichage" et supprimer le mot de passe.

Pour "Y" représente le nombre d'année compléte, "M" les mois , "D" les jours , "YM" le nombre de mois dans l'année incompléte, "MD" le nombre de jour d'un mois incomplé
donc Excel comprend "Y" comme étant le nombre d'année complète?
j'ai cherché la fonction datedif() et je ne la trouve pas! Excel l'affiche en tant que fonction sans argument. c'est pour ça que je capte pas les "Y" et consorts.
je ne comprends pas ce que peut faire la nuance entre "M" et "YM", de même entre "D" et "MD"?
regarde ce que tu as mis dans la formule de la colonne H :
=SI(C2<>"";SI(D2-AUJOURDHUI()=0;"C'est l' Anniversaire de "&B2;"Anniversaire de "&B2&" dans "&SI(DATEDIF(AUJOURDHUI();D2;"M")=0;"";DATEDIF(AUJOURDHUI();D2;"M")&" mois, ")&SI(DATEDIF(AUJOURDHUI();D2;"D")=0;" ";(DATEDIF(AUJOURDHUI();D2;"MD")&SI(DATEDIF(AUJOURDHUI();D2;"D")>1;" jours ";" jour "))));"")
tu mets "Y", "M" et ensuite "MD". pourquoi ne pas avoir mis à la place "D" tout simplement?!
les parenthèses en gras ne sont pas nécessaires ils me semblent?!

merci pour tes explications.
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
1 avril 2010 à 14:20
re-moi,

Le problème du tri dit venir du fait que tu as supprimer des colonnes et sans en tenir compte dans le code
ben j'ai regardé dans le code. si je le comprends bien, la seule chose à changer est Range("H36").Select, que j'ai changé en Range("F30").Select. tu avais mis H à cause des 2 colonnes de séparation E et G. donc je ne vois vraiment pas d'où vient le problème.

dans la colonne D, je comprends pas non plus un calcul dans ta formule.
pour rappel :
=SI(C2<>"";SI(DATE(ANNEE(C2)+ANNEE(AUJOURDHUI())-ANNEE(C2);MOIS(C2);JOUR(C2))<AUJOURDHUI();DATE(ANNEE(C2)+ANNEE(AUJOURDHUI())-ANNEE(C2)+1;MOIS(C2);JOUR(C2));DATE(ANNEE(C2)+ANNEE(AUJOURDHUI())-ANNEE(C2);MOIS(C2);JOUR(C2)));"")
le calcul ANNEE(C2)+ANNEE(AUJOURDHUI())-ANNEE(C2)
donnera forcément et toujours l'année en cours?! donc pourquoi ce calcul? on pourrait écrire plus simplement ANNEE(AUJOURDHUI()).
il en est de même pour ANNEE(C2)+ANNEE(AUJOURDHUI())-ANNEE(C2)+1 qu'on pourrait simplifier en ANNEE(AUJOURDHUI())+1.

pour revenir à la formule de la colonne H, à la toute fin, il faut remplacer le "D" par "MD" pour ne pas avoir de bug qui pourrait indiquer 0 jours.
et aussi, en remplaçant tous les "D" par "MD", cela évite d'avoir écrit Anniversaire de tibouuh dans 6 mois, 0 jour. mais seulement Anniversaire de tibouuh dans 6 mois, .

tu peux m'expliquer aussi Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
, stp Mike.
Order1:=xlAscending et Orientation:=xlTopToBottom je comprends, mais le reste non.

et pour l'activation?
je ne veux pas que toutes les macros de n'importe qui soient activées d'office, mais seulement les miennes (dans un futur plus ou moins proche...) et celle de ton fichier.

désolé de t'embêter avec toutes mes questions, mais ça me permet de mieux comprendre ton fichier, d'essayer de le simplifier au maximum et de le faire à ma sauce.
merci encore pour ton aide précieuse. ;-)
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
1 avril 2010 à 14:38
pour le classement, toutes les lignes non coloriées sont bien classées.
mais si l'anniversaire a lieu dans moins de 15 jours (on a alors des lignes coloriées), celles-ci ne sont pas dans l'ordre!
j'ai cherché mais je trouve pas le problème!
une idée?!
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
1 avril 2010 à 22:30
re,

bon j'ai progressé en trouvant une solution pour le tri par date.
en fait, j'ai changé dans le code les "A2" et le "D2" en "A1" et "D1".
je sais pas pourquoi ça marche pas avec le 2 en indice (ça me paraissait juste pourtant?!).

j'ai effectué toutes les simplifications de formules dont j'ai parlé précédemment. et tout fonctionne bien apparemment.

il ne reste donc plus que la partie activation automatique de la macro et savoir ce que Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, DataOption1:=xlSortNormal signifie.

merci encore une fois.
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
3 avril 2010 à 09:27
Up
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
3 avril 2010 à 11:37
Re,

Comme je te l'ai déjà dit, c'est un vieux fichier, actuellement j'ai peu de temps, mais je réactualiserais ce fichier surtout au niveau de la formule en H ou effectivement on n'a pas à totaliser les années. En fait à l'époque j'ai du prendre la formule en F et simplement changer les adresses de cellules.
Pour les mots de passe sur fichier, on n'y accède pas de la même façon suivant les versions Excel, mais tu l'as trouvé.
Pour le tri, je l'ai testé, que ce soit sur Excel 2000, 2003 ou 2007 il fonctionne parfaitement, du moins chez moi !
Testes le fichier initial et tiens-moi au courant
0
tibouuh Messages postés 2686 Date d'inscription lundi 30 juin 2008 Statut Contributeur Dernière intervention 9 février 2017 647
3 avril 2010 à 20:26
Salut Mike,

le fonctionnement du fichier est bon maintenant.
comme je l'ai mis j'ai juste dû faire des modifs
j'ai changé dans le code les "A2" et le "D2" en "A1" et "D1"

j'ai testé avec ta version et ça marche sans faire de modifs. j'ai dû faire un changement de trop qui n'a pas plu à Excel et qui le dérangeait pour faire le tri correctement. lequel je n'en sais rien! mais ça marche comme ça. donc c'est OK.

pour l'activation auto, j'ai cherché et les gens dans des discussions disaient d'autoriser toutes les macros. mais ça j'ai pas trop envie de le faire! donc je crois que je vais devoir l'autoriser à chaque fois, tant pis! si je trouve une solution dans l'avenir, je viendrais la poster ici.

et pour les explications de l'autofilter, laisse tomber. je comprendrai ça plus tard. je chercherai. comme ça je progresserai encore mieux sur Excel. ^^

sans ton fichier j'y serais jamais arrivé tout seul.
mille fois merci pour tout Mike.
ciao ;-)
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
3 avril 2010 à 21:16
Re,

j'ai changé dans le code les "A2" et le "D2" en "A1" et "D1"
Oui dans mon code le tri commence sur la ligne 2 pour ne pas toucher aux entêtes de colonne

Pour l'activation automatique des macros tu trouveras sur ce lien la procédure que j'ai rédigée dans les astuces du forum qui va te permettre de signer numériquement tes macros et donc ces macros et uniquement ces macros s'activeront automatiquement, si tu as un soucis fais signe

https://www.commentcamarche.net/faq/21009-excel-signature-numerique

Sans voir ton fichier il est difficile de voir ce qui cloche dans l'autofilter, je te conseille de te servir de l'assistant macro et de refaire cette partie du code.
Note bien point par point toute la manip
Mettre en surbrillance le tableau
Données/Filtrer/Filtre automatique etc ...
Filtre la colonne D2 en sélectionnant l'ordre croissant (colonne de mon fichier)
Refais Données/Filtrer/Filtre automatique etc ...pour désactiver l'autofilter et compares les codes que tu trouveras dans la Thisborkbook

La persévérance même à tout, souvent le résultat est le fruit de l'obstination
0