begin process at 2008 07 06 17:54:10
1 205 682 membres
247 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

COMMENT CRÉER UNE BASE ACCESS, CRÉER TABLE, LIRE COLONNE, EN QUELQUES LIGNES VB5-VB6


Information sur la source

Catégorie :Base de Donnees Niveau : Débutant Date de création : 02/03/2002 Date de mise à jour : 25/08/2002 14:33:59 Vu / téléchargé: 39 606 / 2 767

Note :
8,93 / 10 - par 15 personnes
8,93 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (32)
Ajouter un commentaire et/ou une note

Description

C'est un code très simple qui dépannera des nouveaux j'en suis sur.
Il réponds à ces questions (en DAO):
- comment creer une base Access sous VB
- comment creer une table Access sous VB
- comment lire les données d'une table / requêtes Access sous VB

1- crée un formulaire très simple :
--> attention, tu dois respecter les noms des 4 obets suivant,
--> c'est une bonne habitude de bien nommer tes contrôles !

boutons:  cmdCreer, cmdTester, et cmdQuitter
combo:    cboAccess

2- dans le menu projet, menu références, coche :
Microsoft DAO 3.5 Object Library
(te permet d'utiliser le dao pour accéder à ta base access 97)

3- copie le code dans le formulaire :

  

Source

  • Option Explicit
  • Const MA_BASE_ACCESS As String = "z.mdb"
  • Private Sub cmdCreer_Click()
  • Dim db As DAO.Database
  • 'Création d'une base vide (plus simple tu meurs !)
  • Set db = DAO.Workspaces(0).CreateDatabase(MA_BASE_ACCESS, dbLangGeneral)
  • 'Création d'une table avec une requête (simple non ?)
  • db.Execute "CREATE TABLE [TableY] ( [ColonneX] Text(50) );"
  • 'On crée une ligne dans cette table
  • db.Execute "INSERT INTO TableY ( ColonneX ) values ('Ceci est un test');"
  • 'On crée une seconde ligne dans cette table
  • db.Execute "INSERT INTO TableY ( ColonneX ) values ('Une autre ligne');"
  • 'Referme la base proprement
  • db.Close
  • 'Libère l'objet (très important et souvent oublié)
  • Set db = Nothing
  • End Sub
  • Private Sub cmdTester_Click()
  • Dim db As DAO.Database
  • Dim rs As DAO.Recordset
  • Me.cboAccess.Clear
  • 'Pas de mot de passe,
  • 'ouverture la plus simple en mode partagé
  • Set db = DAO.Workspaces(0).OpenDatabase(MA_BASE_ACCESS, False, False)
  • 'Ouverture d'une requête sur la table,
  • 'dbForwardOnly = lecture en avant = plus rapide
  • Set rs = db.OpenRecordset("select * from [TableY];", , dbForwardOnly)
  • 'Tant qu'il en reste
  • Do While Not rs.EOF
  • 'Ajout dans la combo
  • 'du premier champ de la requête
  • Me.cboAccess.AddItem rs.Fields(0).Value
  • 'passe au suivant
  • rs.MoveNext
  • Loop
  • 'On affiche le premier élément
  • 'de la liste comme sélectionné
  • If Me.cboAccess.ListCount > 0 Then
  • Me.cboAccess.ListIndex = 0
  • End If
  • 'Referme la requête proprement
  • rs.Close
  • 'Referme la base proprement
  • db.Close
  • 'Libère l'objet (très important et souvent oublié)
  • Set rs = Nothing
  • 'Libère l'objet (très important et souvent oublié)
  • Set db = Nothing
  • End Sub
  • Private Sub cmdQuitter_Click()
  • 'On referme tout et fini
  • Unload Me
  • End
  • End Sub
Option Explicit
    Const MA_BASE_ACCESS As String = "z.mdb"

Private Sub cmdCreer_Click()
    Dim db As DAO.Database

    'Création d'une base vide (plus simple tu meurs !)
    Set db = DAO.Workspaces(0).CreateDatabase(MA_BASE_ACCESS, dbLangGeneral)

    'Création d'une table avec une requête (simple non ?)
    db.Execute "CREATE  TABLE [TableY] ( [ColonneX] Text(50) );"

    'On crée une ligne dans cette table
    db.Execute "INSERT INTO TableY ( ColonneX ) values ('Ceci est un test');"

    'On crée une seconde ligne dans cette table
    db.Execute "INSERT INTO TableY ( ColonneX ) values ('Une autre ligne');"

    'Referme la base proprement
    db.Close

    'Libère l'objet (très important et souvent oublié)
    Set db = Nothing

End Sub


Private Sub cmdTester_Click()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset

    Me.cboAccess.Clear

    'Pas de mot de passe,
    'ouverture la plus simple en mode partagé
    Set db = DAO.Workspaces(0).OpenDatabase(MA_BASE_ACCESS, False, False)

    'Ouverture d'une requête sur la table,
    'dbForwardOnly = lecture en avant = plus rapide
    Set rs = db.OpenRecordset("select * from [TableY];", , dbForwardOnly)

    'Tant qu'il en reste
    Do While Not rs.EOF
        'Ajout dans la combo
        'du premier champ de la requête
        Me.cboAccess.AddItem rs.Fields(0).Value

        'passe au suivant
        rs.MoveNext
    Loop

    'On affiche le premier élément
    'de la liste comme sélectionné
    If Me.cboAccess.ListCount > 0 Then
        Me.cboAccess.ListIndex = 0
    End If


    'Referme la requête proprement
    rs.Close

    'Referme la base proprement
    db.Close

    'Libère l'objet (très important et souvent oublié)
    Set rs = Nothing

    'Libère l'objet (très important et souvent oublié)
    Set db = Nothing

End Sub

Private Sub cmdQuitter_Click()
    'On referme tout et fini
    Unload Me
    End
End Sub



  

Conclusion

Modification du 25-08-2002 : le fichier zip est corrigé, un nouveau bouton permet la création d'une table et de champs par l'utilisation de tabledefs et fields.

voilà
Bigane@tiscalinet.ch
  
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

  • signaler à un administrateur
    Commentaire de shivan le 02/03/2002 18:50:23

    ben si c toi, c parfait !!! je voulais mettre au propre un tutoriel dans le genre, mais la je suis coiffé au poteau !!! ;-)
    bon ben un 10/10 pour la clarté !

    $hîv@n

  • signaler à un administrateur
    Commentaire de 106 le 28/03/2002 09:40:42

    C'est une solution. Et en plus, elle peut fonctionner avec d'autres types de base de données.
    J'utilise une autre méthode, j'essaierai d'en faire un petit extrait.

    Aller 9/10 pour pas mettre 10.

  • signaler à un administrateur
    Commentaire de bigane le 28/03/2002 23:36:38

    Merci pour les notes, oui c'est bien de moi.

  • signaler à un administrateur
    Commentaire de safireevil le 08/05/2002 18:37:23

    g 1 problème !
    y me dit type défini par l'utilisateur non défini à propos de "Dim db As DAO.Database"

    qqn peut-il m'aider ?

  • signaler à un administrateur
    Commentaire de bigane le 08/05/2002 19:57:40

    Facile, ce qu'il te manque c'est le moteur jet (DAO) :
    Tu vas dans le menu Projet / Références,  et tu coches
    Microsoft DAO 3.51 Object Library
    (PS: tu peux avoir DAO 3.6, ou un autre suivant ton installation de VB6)
    (PS/PS évite DAO 2.5/3.51 qui est une compatibilité pour ancien composant)
    A+

  • signaler à un administrateur
    Commentaire de Leortien le 19/07/2002 12:57:35

    le prend pas mal mais
    je t'adore toi
    c exactement ce que je cherchais
    t un amour

  • signaler à un administrateur
    Commentaire de bigane le 20/07/2002 11:06:25

    Merci, bon code et bisous...
    Si tu as un souci, écris le ici, je te répondrai, et cela peut dépanner les autres.
    A+
    Bigane

  • signaler à un administrateur
    Commentaire de Leortien le 22/07/2002 11:51:43

    lol moi fo pas me proposer de l'aide je suis un vrai parasite (je ne sais pas si tu connais le terme "boulet" ;op)

    ****************
    en fait je cherche un moyen de mettre un mot de passe sur la base que je crée et j'arrive pas à trouver comment on fait
    je crois que je suis po doué (et surtout que je m'y prends mal pour apprendre VB)
    ****************

    bisous aussi
    tu veux po être mon papa/ma maman pour visual basic? lol (je suis un vrai gamin et je commence à me croire sur un site de chat :o/ )

  • signaler à un administrateur
    Commentaire de programheure le 21/08/2002 16:07:05

    Salut,

    Je débute dans la programmation VB et en m'attaque déjà à l'ADO.. un peu fou le mec mais bref... Voilà ton exemple et très clair et très compréhensible. J'ai cependant essayer de l'adapter à mes besoins en utilisant non pas une chaine de caractère définie mais en passant par une variable dna sle code suivant :

    ton code :
    'On crée une ligne dans cette table
    db.Execute "INSERT INTO TableY ( ColonneX ) values ('Ceci est un test');"

    Mon code :
    j'ai défini bien entendu correctement la variable utilisisée.
    'On crée une ligne dans cette table
    db.Execute "INSERT INTO MaTable ( MonChamp ) values (MaVaraible);"

    Voici le message d'erreur :
    Erreur d'execution '3061'
    Too Few parameters. Expected 1

    Autre question. Pourquoi n'utilises tu pas les recordsets ? Peux tu donner la version avec l'utilisation d'un recordset STP ?

    Merci par avance pour ton aide précieuse.

  • signaler à un administrateur
    Commentaire de programheure le 22/08/2002 09:50:04

    J'apporte ma propre réponse :

    db.Execute "INSERT INTO MaTable ( MonChamp ) values (" & MaVaraible & ");"

    Et ça... ça fonctionne !

  • signaler à un administrateur
    Commentaire de bigane le 25/08/2002 13:58:54

    Réponse à programheure:
    Oui, je peux aussi utiliser des recordsets au lieu du db.execute.
    Voici la syntaxe (de tête, je reviens de vacances...)

    Au lieu de la ligne :
    'On crée une ligne dans cette table
    db.Execute "INSERT INTO TableY ( ColonneX ) values ('Ceci est un test');"

    Mettre les lignes suivantes :
        '(Ce dim est mal placé, il doit être mis en début de la fonction normalement)
        Dim rs As Recordset
        'Ouverture de la table en lecture et écriture
        'dbOpenTable = indique l'accès à une table en direct,
        'le traitement sera plus rapide.
        Set rs = db.OpenRecordset("TableY", dbOpenTable)
        'Crée une nouvelle ligne dans la table
        rs.AddNew
        
        '3 méthodes d'accès à la même donnée:
        '------------------------------------
        
        'Méthode 1 : Accède au champ numéroté 0 (colonne 1 de la table)
        rs.Fields(0).Value = "Ceci est un test V1"
        
        'Méthode 2 : Accède au champ nommé ColonneX
        rs.Fields("ColonneX").Value = "Ceci est un test V2"
        
        'Méthode 3 : Accède au champ nommé ColonneX, mais notation simplifiée
        rs!ColonneX.Value = "Ceci est un test V3"
        
        'Méthode 3 bis: les crochets permettent les noms avec les espaces
        rs![ColonneX].Value = "Ceci est un test V4"
        
        'Valide toutes les modifications et effectue les tests d'intégrité (si il y en a).
        'Seule la dernière modification est effectuée dans la base après cette ligne (V4).
        'Durant toutes les modifications précédentes, la ligne était illisible
        'par une autre connexion à la base.
        rs.Update
        
        'Referme la table proprement
        rs.Close
        
    'Voilà, la chose est faite. remplacé la valeur par MaVariable est alors plus simple.
    'La lecture est aussi aisée, on ouvre la table de la même façon,
    'on se déplace par des rs.MoveNext après avoir traité la première ligne,
    'et ceci tant qu'il y a encore quelque chose dans la table :

        'Ouverture de la table en lecture écriture
        Set rs = db.OpenRecordset("TableY", dbOpenTable)
        
        'Tant qu'il y a des lignes dans la table
        Do While Not rs.EOF
            
            'Fait un reste sur une colonne de cette table
            '(ce test est un exemple)
            If rs.Fields(0).Value <> "Une autre valeur" Then
            
                'Passe en mode modification
                rs.Edit
            
                'Modifie cette ligne
                rs.Fields("ColonneX").Value = "Correctif"
                
                'Valide la dernière modification
                rs.Update
            
            'Sinon...
            Else
            
                'Détruit pour toujours cette ligne ignoble !
                rs.Delete
                
            End If
            
            
            'On passe à la prochaine ligne de la table
            rs.MoveNext
        
        'Je boucle sur le tant que
        Loop
        
        'Referme la table proprement
        rs.Close
        
        'Libère l'objet (très important et souvent oublié)
        Set rs = Nothing


    Des questions ou remarques ?
    Bigane.
            


  • signaler à un administrateur
    Commentaire de bigane le 25/08/2002 14:41:15

    PS: le code source est mis à jour avec un nouveau bouton permettant la création de la table avec les objets DAO au lieu d'une requête.
    L'ensemble de l'exemple de mon précédent message y est inclu.

    Bon code à tous,
    Bigane.

  • signaler à un administrateur
    Commentaire de BlackWizzard le 10/12/2002 03:23:00 administrateur CS

    T un champion!
    tu me sauve la vie! :p

  • signaler à un administrateur
    Commentaire de marchmat le 26/03/2003 15:11:18

    comment on fait pour creer un index et l'autoincrementer??? il doit y avoir moyen mais je suis débutant alors si tu pouvait me donner un coup de main, ca m'arrangerais fortement...
    Merci....

  • signaler à un administrateur
    Commentaire de capoueidiablo le 28/07/2003 14:41:11

    Bon ba je vois que vous êtes tous des grosses têtes :-p alors je vais vous poser une question qui je suis sure est simple pour vous :
    bon ba voila je veux faire exactement la meme chose que le code source si dessus mais sans utilisé l'ADO ou la DAO mon boss il m'a dis qu'il ne voulais en aucun cas ces technique de prog et qu'il fallais que j'utilise des API donc j'ai fais des recherche, mais je trouve pas ttes les sources sur les sites dédiés au VB et au base de données parlent de la DAO :'( s'il vous plait aidé moi.....

  • signaler à un administrateur
    Commentaire de bigane le 28/07/2003 22:58:14

    Si tu n'utilise pas ADA ou DAO, alors il te reste l'ODBC. Par exemple tu installe mySQL sur un poste, tu crée une source ODBC avec ta base de données Access, et tu interroge ta base avec du PHP. C'est simple, efficace et tu te passes de ADO et DAO. Pour finir, si ton boss veux quand même utiliser les API, qu'il le fasse lui même. Ce n'est pas la peine de réinventer la roue. L'appel aux api ne serait qu'un accès à une source d'ODBC. C'est bien lourd pour un bénéfice zéro. Vu que tu semble débutant, ton code sera approximatif, difficile à maintenir. Tu passeras des heures à réinventer des accès déjà programmés par des équipes de développeurs... bref ton boss va perdre son temps et son argent. Toi, par contre, tu te formera et ton expérience vaudra de l'or (celui de ton boss).
    Bon courage,
    je serai curieux de connaitre la fin de cette histoire,
    ne nous oublie pas.

  • signaler à un administrateur
    Commentaire de capoueidiablo le 29/07/2003 09:30:55

    ba en faite il m'a dis que l'ado reste superficiel et que tu ne peux justement pas tout géré par cette methode et donc qu'il était preferable d'utilisé de l'odbc enfin bref aujourd'hui j'ai une reunion je vais lui en parler et le cogné s'il le faut ;-)
    merci bien bigane, quand j'aurai fini mon code je vous fournirai quelques fonctions...

  • signaler à un administrateur
    Commentaire de zeunz le 04/05/2004 09:04:03

    salut.
    merci pr ton code source ki me sera tres utile. chez moi je possede access 2000 et les reference ne sont pas les memes qu'access97.
    dc mnt j'ai les deux.

    par contre je voualis te demander si tu sais comment créer les relations ds access (97 et 2000) par l'intermediaire du code vb.

    je voudrai en qque sorte créer automatiquement une base de donnees avec des tables et reliée entre elles (par les clefs) des que l'utilisateur execute pr la 1ere fois le programme ke je créé.

    sinon pour ta source, bon code propre et bien commentée. ca c'est tres important.

    bonne continuation.

    zeunz.

  • signaler à un administrateur
    Commentaire de bigane le 04/05/2004 19:38:30

    salut zeunz,

    Voici ce que tu peux faire (par exemple)
    Crée une base avec deux tables :
    Clients [
      idClient : numérique, primarykey
      NomClient : Texte
    ]
    Produits [
      idProduit : numérique, primarykey ;
      idClient : numérique ;
      NomProduit : Texte
    ]

    le but de la manip sera alors de relier les champs idClient des deux tables.

    Voici le bout de code créant cette relation en ADO :
    ' Pour simplifier, je désigne db comme
    ' étant ma base dans la suite du code
    Dim db As Database
    Set db = CurrentDb()
    Dim r As Relation

    ' Création d'une relation
    Set r = New Relation

    ' Ma relation relie les clients et les produits, d'où ce nom pratique
    r.Name = "ClientsProduits"

    '  J'indique les tables concernées par cette relation
    r.Table = "Clients"
    r.ForeignTable = "Produits"

    ' Je désigne le champ de la table "Clients"
    r.Fields.Append r.CreateField("idClient")

    ' ce champ est relié à la table jointe (au champ idClient)
    r.Fields("idClient").ForeignName = "idClient"

    ' J'ajoute la nouvelle relation à la collection de la base
    db.Relations.Append r
    ' validation
    db.Relations.Refresh

    ' libération propre et explicite des pointeurs
    set r = nothing
    set db = nothing

    Au cas où, voici la syntaxe pour supprimer la relation
    ' db.Relations.Delete "ClientsProduits"

    Il est facile pour comprendre les relations de les créer avec l'interface. Puis de regarder le résultat en mode debug avec des espions sur l'objet db.relations par exemple. C'est de cette façon que j'ai créé cet exemple.

    A+
    Bigane

  • signaler à un administrateur
    Commentaire de zeunz le 05/05/2004 08:37:44

    merci bigane pr le temps ke tu m'as consacré à ma question. je vais faire un essai avec tt ceci et  je te tiendrai au courant.
    merci.
    zeunz

  • signaler à un administrateur
    Commentaire de hastan le 20/09/2004 16:28:03

    hello !! g un ch'tit problem: j ai besoin d exporter un resutlat  de requette sql depuis vb vers Acces !! please ! help!!

  • signaler à un administrateur
    Commentaire de bigane le 20/09/2004 19:12:18

    Donne plus d'explications  :
    Une requête ? elle rapatrie un ou plusieurs résultats ?

    --> si un seul alors tu intégre les données avec une simple requête d'ajout ou un recordset ouvert sur la table de destination (et rs.addnew comme décrit plus haut).
    --> si plusieurs tu peux faire une boucle pour relire les enregsitrements de ta requête un a un et utilisé la méthode utilisée pour un seul.
    Sinon tu as encore la possibilité d'effectuer une requête d'insersion "insert into LaTable select xxx" et tu utilise ta fameuse requête comme sources de valeur à écrire dans ta table. Problème :  il faut que tes données correspondent exactement à celles de la table de destination.
    Cela doit te donner des pistes ... sinon, donne un exemple de requête, le type de tes données, la ou les tables de résultats ...
    a+
    Bigane.

  • signaler à un administrateur
    Commentaire de stefdsig le 26/04/2005 09:47:30

    Bonjour,
    j'ai essayé le code et ca marche mais je n'arrive pas a integrer dans ma base de donné des enregistrements de type numérique. Le text fonctionne et ce place correctement dans les enregistrements mais pas les valeurs numériques.  


    'Création d'une table avec une requête (simple non ?)
        db.Execute "CREATE  TABLE [TableY] ( [ColonneX] Text(50) );"    ok

    'Création d'une table avec une requête (simple non ?)
        db.Execute "CREATE  TABLE [TableY] ( [ColonneX] single );"   non


    merci pour le code qui ma bien aidé.

  • signaler à un administrateur
    Commentaire de stefdsig le 02/05/2005 16:27:14

    j'ai trouvé la solution
    db.Execute "INSERT INTO ADULTE (LT,B,I) values (""" & tableauA(a).adulteLT1 & """, """ & tableauA(a).adulteB1 & """,""" & tableauA(a).adulteI1 & """ );"

    Mais un autre probleme se pose. Je n'arrive pas a renseigner plusieur table. Les valeur sont bonne mais la seconde table ne se rempli pas.
    Merci

  • signaler à un administrateur
    Commentaire de bigane le 02/05/2005 18:51:25

    Salut,

    Désolé pour ton problème, mais tu ne peux pas insérer une ligne dans plusieurs tables en une seule requête.
    Par contre si tu la décompose (une par table) alors tu devrais pouvoir y arriver.

    Pour ton premier problème, voici une solution :
    db.Execute "CREATE  TABLE [TableA] ( [ColonneX] Long);"

    db.Execute "CREATE  TABLE [TableB] ( [ColonneX] Number );"

    La table A contiendra une colonne de type Long (effecue des tests pour vérifier le type).
    La table B contiendra une colonne de type Double, poun insérer une valeur tu feras par exemple :

    db.Execute "INSERT INTO TableB ( ColonneX ) values (2.5);"

    A+
    Bigane

  • signaler à un administrateur
    Commentaire de igorois le 30/06/2005 20:35:35

    salut bigane,
    moi, j'utilise la methode ADO pour gerer mes bases de donnees et je voudrais savoir si tu as un code qui cree une copie d'1e base de donnee deja concu sous access sans les donnes bien sur(ne pas oublier c'est ADO)

  • signaler à un administrateur
    Commentaire de bigane le 02/07/2005 01:16:21

    Salut Igorois,
    Non, désolé je n'ai pas cela. Par contre j'ai déjà eu un problème similaire. C'est réélement complexe.
    Tu peux utiliser la commande suivante :
        Dim dbEng As DAO.DBEngine
        dbEng.CompactDatabase scrName, DstName
    Car celle-ci permet de créer une copie compressée de ta base initiale. Un balayage des tables permet ensuite de les vider une à une, et une dernière compression réinitialise les compteurs.
    Une seconde méthode consiste à creer une base vide, à énumerer les tables et les colonnes de ta première base pour ensuite les créer dans la suivante. C'est long, mais si tu y arrive tu pourras tout faire avec cette méthode.
    A+

  • signaler à un administrateur
    Commentaire de pi_givinchi le 03/07/2005 00:15:59

    c'est un bon code, et permet moi vous donne une question j'ai utilise déja l'objet data pour me connecter deVB6 avec la BD sur access (j'ai déja convertie ma bd en 97) et j'ai connecté mes zone de text ,et ajouter des boutons de commande parmis la recherche mais il ne fonction pas correctement? si qq peut m'aide par un code standart je serai heureux?

  • signaler à un administrateur
    Commentaire de Munkyubi le 12/01/2006 09:37:44

    Bonjours. Tout d'abord merci beaucoup pour ce code c'est trés sympa et trés bien fait ^^
    Par contre j'aimerais savoir. Peut-on, à la manière du DAO, créer des tables, champs etc... sans utiliser de requêtes mais en ADO ? Je sais qu'en DAO il y a déjà des méthodes définies pour le faire mais j'aimerais savoir si en ajoutant une référence ou autre on pourrait le faire en ADO. (Tout simplement parce-que mon boss n'aime pas vraiment les requêtes sql lol)
    Merci d'avance ^^

  • signaler à un administrateur
    Commentaire de Exploreur le 21/02/2007 20:41:36

    Salut,

    Qui cherche, trouve...j'ai cherché...j'ai trouvé !!
    Cela ma évité de poser une question sur le forum..
    10/10

    A+
    Exploreur

  • signaler à un administrateur
    Commentaire de bigane le 25/02/2007 19:37:57

    Merci,
    a ton service et bon code.
    a+
    Bigane

  • signaler à un administrateur
    Commentaire de Reelaxman le 08/12/2007 22:45:46 10/10

    Du sur mesure !!!!!!!!!!!!!!

Ajouter un commentaire

Pub



Appels d'offres

WEB DESIGN
Budget : 1 000€
Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS