Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1529 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  RESOLU inscription commentaire selon critère

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

RESOLU inscription commentaire selon critère

n°1255424
peanutz
Posté le 29-11-2005 à 16:53:29  profilanswer
 

bonjour
 
j'ai une base de données où dans ma colonne AT figurent des dates sous format jj/mm/annee
 
je voudrais créer une macro qui permette d'insérer une colonne à coté, de l'appeler "tranches d'âge"
 
et de passer en revue chaque cellule de ma colonne AT2, AT3, AT4 jusqu'à la fin de mon tableau et inscrire dans la colonne juxtaposée le commentaire ;
à savoir, si la date renseignée est "15/06/1987" écrire à côté "10 à 20 ans"
 
il faudrait aussi que la macro se base par rapport à l'année en cours, genre, mes variables auraient l'air de ça
 
Dim age1, age2, age3, age4, age5, age6
age1 = "01/01/& Year(Date) - 5"
age2 = "01/01/& Year(Date) - 10"
age3 = "01/01/& Year(Date) - 20"
age4 = "01/01/& Year(Date) - 30"
age5 = "01/01/& Year(Date) - 40"
age6 = "01/01/& Year(Date) - 50"
 
qq'un peut m'aider siouplait ?


Message édité par peanutz le 30-11-2005 à 16:30:48
mood
Publicité
Posté le 29-11-2005 à 16:53:29  profilanswer
 

n°1255930
peanutz
Posté le 30-11-2005 à 12:13:41  profilanswer
 

c impossible ?

n°1255948
galopin01
Posté le 30-11-2005 à 13:12:12  profilanswer
 

si..si !


---------------
roger
n°1255951
galopin01
Posté le 30-11-2005 à 13:14:38  profilanswer
 

bonjour,  
C'est possible... mais faudra attendre encore  un petit peu, car je part au boulot !
A+


---------------
roger
n°1255970
peanutz
Posté le 30-11-2005 à 13:39:48  profilanswer
 

lol galopin ok.
j'ai beau essayer j'arrive pas !

n°1256095
watashi
La démotivation : JAMAIS !
Posté le 30-11-2005 à 16:00:59  profilanswer
 

Salut peanutz,
Voilà une petite sollution pour toi :) Cette macro t'écris les tranches d'ages dans la colone 47 en fonction d'une date en collone 46 :

Code :
  1. Sub TrancheAge()
  2. Dim i
  3. i = 2 ' Ligne 1 = entête
  4. 'Mise en place des tranches d'ages
  5. Do
  6. Cells(i, 47).Select 'AT = col 46 pour date naissance, écriture en 47
  7.     'Place une formule dont le résultat évoluera en fonction de la date
  8.     ActiveCell.FormulaR1C1 = _
  9.         "=IF(YEAR(TODAY())-YEAR(RC[-1])<10,""moins de 10 ans"",IF(YEAR(TODAY())-YEAR(RC[-1])<20,""10 à 20 ans"",IF(YEAR(TODAY())-YEAR(RC[-1])<30,""20 à 30 ans"",IF(YEAR(TODAY())-YEAR(RC[-1])<40,""30 à 40 ans"",IF(YEAR(TODAY())-YEAR(RC[-1])<50,""40 à 50 ans"",IF(YEAR(TODAY())-YEAR(RC[-1])<60,""50 à 60 ans"",""plus de 60 ans"" ))))))"
  10.     'A écrire sur une seulme ligne dans VBA
  11. i = i + 1
  12. Loop Until Cells(i, 1).Value = "" 'Continue tant que la cellule en colone 1 n'est pas vide
  13. End Sub

Je me suis basée sur les années mais tu eux le faire de date à date
en remplaçant :   YEAR(TODAY())-YEAR(RC[-1])
par :                 (TODAY()-RC[-1])/365.25
bon courage :)


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
n°1256132
peanutz
Posté le 30-11-2005 à 16:30:29  profilanswer
 

wow trop compliqué, ça ira bien  
 
merci encore

n°1256141
watashi
La démotivation : JAMAIS !
Posté le 30-11-2005 à 16:42:10  profilanswer
 

Atennds si c'est trop compliqué ça va pas !
Le but est aussi que tu comprennes pas seulment que tu aie la bonne formule !
 
Qu'est-qui te pose question ?


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
n°1256157
peanutz
Posté le 30-11-2005 à 16:55:50  profilanswer
 

disons que je n'ai plus assez de temps pour peaufiner !
j'ai même pas réussi à changer les tranches d'âge ! genre
01 à 05
05 à 10
10 à 20
20 à 30
30 à 40
40 à 50
+ de 50
 
mais franchement ça va c'est nickel comme ça
 
merci pour tout

n°1256178
watashi
La démotivation : JAMAIS !
Posté le 30-11-2005 à 17:11:20  profilanswer
 

peanutz a écrit :

mais franchement ça va c'est nickel comme ça

Surement mais le mieux serait que tu mettent tes tranches d'age à toi :

Code :
  1. "=IF(YEAR(TODAY())-YEAR(RC[-1])<10,""moins de 10 ans"",IF(YEAR(TODAY())-YEAR(RC[-1])<20,""10 à 20 ans"",IF(YEAR(TODAY())-YEAR(RC[-1])<30,""20 à 30 ans"",IF(YEAR(TODAY())-YEAR(RC[-1])<40,""30 à 40 ans"",IF(YEAR(TODAY())-YEAR(RC[-1])<50,""40 à 50 ans"",IF(YEAR(TODAY())-YEAR(RC[-1])<60,""50 à 60 ans"",""plus de 60 ans"" ))))))

ceci est, dans le language anglais, la formule qui se met dans ta case
 
YEAR(TODAY()) : ceci te donne l'année à la date d'aujourd'hui et s'affiche dans la cellule : ANNEE(AUJOURDHUI())
RC[-1] : cà c'est l'addresse de la cellule : R pour ligne rien entre crochet indique que c'est sur la même ligne, C pour la colone avec [-1] pour dire que c'est la cellule juste à gauche s'affiche AT1 par exemple.
YEAR(TODAY())-YEAR(RC[-1]) : ceci te donne donc le nombre d'années
après tu as la mise en place des conditions : If(test,si oui, si non)
le test en premier c'est YEAR(TODAY())-YEAR(RC[-1])<10 tous les tests sont construits ainsi, il n'y a que ces valeurs en gras à changer et le contenu du message de sortie : ""moins de 10 ans"".
Ensuite ce n'est qu'un jeu sur le nombre de parenthèses et sur les if, placer tes conditions dans l'ordre.
 
Essayes quand même...


Message édité par watashi le 30-11-2005 à 17:14:56

---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
mood
Publicité
Posté le 30-11-2005 à 17:11:20  profilanswer
 

n°1256287
galopin01
Posté le 30-11-2005 à 19:26:49  profilanswer
 

bonsoir,
comme promis je t'apporte ma contribution :
Ces 2 macros doivent être copiées dans un module standart (Module1...) pas dans un module de feuille.

Code :
  1. Sub Test()
  2. Dim o As Range
  3. For Each o In Range("AT1:AT100" )
  4. o.Offset(0, 1) = TRANCHE(o)
  5. Next
  6. End Sub
  7. Function TRANCHE(Cellule As Range) As String
  8. Dim i%
  9. i = DateDiff("yyyy", Cellule, Date)
  10. Select Case i
  11. Case Is < 11: z = "0-10"
  12. Case Is < 21: z = "10-20"
  13. Case Is < 31: z = "20-30"
  14. Case Is < 41: z = "30-40"
  15. Case Is < 51: z = "40-50"
  16. Case Is < 61: z = "50-60"
  17. Case Is < 71: z = "60-70"
  18. Case Is < 81: z = "70-80"
  19. Case Is < 91: z = "80-90"
  20. Case Else: z = "Pièce de musée"
  21. End Select
  22. TRANCHE = z
  23. End Function

Ensuite tu n'a plus qu'a lancer la macro Test depuis ta feuille.
Nota : la macro s'arrête à la ligne 100 mais tu peux mettre un zéro de plus sans problème.
Je pense que le code se passe de commentaire.
 
Nota : il est possible d'utiliser la fonction TRANCHE comme une fonction d'Excel en mettant dans la cellule AU1 par exemple :
=TRANCHE(AT1)
et en faisant une recopie incrémentée. Ainsi ta feuille est toujours à jour.
A+


---------------
roger

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  RESOLU inscription commentaire selon critère

 

Sujets relatifs
[Resolu] Probleme Register_Globals[VBS][RESOLU] Fonction "Replace" non-case-sensitive
[resolu] arrondi d'un décimalRESOLU coller des formules ss lien de fichier
[Résolu] Exécution sous unix[RESOLU] Transmission de variable entre deux pages PHP ?
supprimer une feuille (résolu)[Résolu] Fonction Execlp avec nombre parametres variable
[PHP] Lister le contenu d'un repertoire en faisant des liens[resolu][vba excel] [résolu]requête avec adodb
Plus de sujets relatifs à : RESOLU inscription commentaire selon critère


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR