Base de données Excel/VBA [Résolu]

Signaler
Messages postés
8
Date d'inscription
vendredi 24 avril 2009
Statut
Membre
Dernière intervention
27 avril 2009
-
Messages postés
8
Date d'inscription
vendredi 24 avril 2009
Statut
Membre
Dernière intervention
27 avril 2009
-
Bonjour tout le monde !

Je suis en train de "créer" sous excel, en VBA, une macro me permettant d'ajouter, modifier et supprimer des "fiches clients" dans une base de données.

Jusqu'ici tout vas bien, sauf que je bloque sur la manière de faire entrer une nouvelle fiche sur la ligne précédant ou suivant la dernière fiche (en gros, ma base de données ne contient qu'une seule ligne, remplacée à chaque nouveau "client"...)

Comment dois-je faire ? J'ai vu "rows.insert" mais à ce moment là comment faire entrer le nouveau client sur cette ligne ?
Actuellement, les informations du client se mettent sur la ligne 3 (nom en A3, prénom en B3, etc...)

Peut-on par exemple a chaque lancement de macro insérer une ligne (ligne 3) et faire déplacer toutes les autres lignes en dessous de celle ci, tout en gardant les données, evidement..?

J'espere que vous avez compris sur quoi je bloque.. Une petite aide me serais précieuse :)
Je vous remercie d'avance !!

7 réponses

Messages postés
8
Date d'inscription
vendredi 24 avril 2009
Statut
Membre
Dernière intervention
27 avril 2009

Ok j'ai trouvé !

AGE = Int((DateDiff("D", DDN, DateTime.Date) / 365.25))

(tout bête, mais bon.. je suis pas un pro du VBA ^^)

Merci Genildf pour ton aide, je vais voir comment mettre le topic en résolu maintenant !
Messages postés
272
Date d'inscription
lundi 12 janvier 2009
Statut
Membre
Dernière intervention
30 décembre 2015
1
Bien sur que tu peut :p

row(3).insert shift := x1down

Voila si mon code est pas bon enregistre une macro qui fait ce que tu veut
Messages postés
8
Date d'inscription
vendredi 24 avril 2009
Statut
Membre
Dernière intervention
27 avril 2009

Oui, moi je viens de faire Worksheets("Base de données").Rows(3).Insert
ça fonctionne bien

Mais justement, qu'est ce que ce "shift := x1down" ? J'ai vu ça sur plusieurs forums
mais j'ai pas compris, peux tu m'expliquer?

(en tout cas merci pour ta rapidité !!)
Messages postés
272
Date d'inscription
lundi 12 janvier 2009
Statut
Membre
Dernière intervention
30 décembre 2015
1
Ca veut dire déplacer les lignes vers le bas (ce que tu veut)

copie la syntaxe tu verra bien
Messages postés
8
Date d'inscription
vendredi 24 avril 2009
Statut
Membre
Dernière intervention
27 avril 2009

Mais le simple Rows.Insert les fait déja se déplacer vers le bas, donc c'est nikel :)

Bon maintenant il ne me reste plus qu'a trouver comment calculer un age sous vba, ce qui n'a pas l'air évident!

Merci pour ton aide !
Messages postés
272
Date d'inscription
lundi 12 janvier 2009
Statut
Membre
Dernière intervention
30 décembre 2015
1
Messages postés
8
Date d'inscription
vendredi 24 avril 2009
Statut
Membre
Dernière intervention
27 avril 2009

Merci c'est gentil ! J'ai utilisé un code très simple qui marche

Private Sub DDN_Enter()
    CALENDRIER.Show
    AGE = (DateDiff("D", DDN, DateTime.Date) / 365.25)
End Sub

Le CALENDRIER est l'userform qui selectionne la DDN (Date de naissance)

Mon seul probleme maintenant, c'est que le résultat s'affiche avec tout un tas de décimale..
J'aimerai donc l'arrondir, MAIS pas à l'entier supérieur, mais à l'entier inférieur (sinon 19,90 ans sera arrondi a 20 ans, alors que la personne a 19 ans)

J'ai peut etre une piste avec un     AGE.Value = Format(AGE.Value, "#")  ?
Mais évidemment ça ne marche pas.. peut etre le # qui ne vas pas..
Je suis pas bien doué en VBA.. Tu saurais comment faire ?