IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Clé primaire en vba [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2010
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 313
    Par défaut Clé primaire en vba
    Bonjour Voici mon problème,
    Je suis en train de faire un fichier qui envoie certaines données dans un autre fichier excel fermé (servant de base de données). Pour cela j'ai utilisé la méthode ADO et je me suis servi de très bon tuto de silkyroad.

    J'arrive à ajouter des enregistrements.

    Par contre je souhaiterais que dans la première colonne du fichier servant de base de données, il y ait un numéro qui s'incrémente à chaque ajout d'enregistrement. Comme une clé primaire dans une base de données.

    Est ce possible et quelle est la méthode à utiliser?
    Merci d'avance pour votre aide.

    Fred

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Quand tu parles de clé primaire, je comprends numéro auto. Si c'est cela, comme tu arrives à écrire dans ton classeur fermé, tu arrives aussi à y lire. Tu fais une requête "SELECT DMax([MaClé]) FROM [MaFeuille$];" et au numéro que tu obtiens, tu ajoutes 1.

    Cordialement,

    PGZ

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2010
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 313
    Par défaut
    C'est ca que je souhaite faire
    Par il y a une erreur je suppose c'est Max et non DMax dans la requete?
    Merci pgz

    OK j'arrive à copier ma clé dans une cellule mais comment fait on pour que cette valeur soit écrite dans une variable directement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     'Définit la requête.
      texte_SQL = "SELECT Max([N_Enregistrement]) FROM [" & Feuille & "$]"
      Set Rst = New ADODB.Recordset
      Set Rst = Cn.Execute(texte_SQL)
     
      Range("B59").CopyFromRecordset Rst
    Merci d'avance

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Tu peux ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim lID as long
    ...
     
    lID = Rst(0) + 1
    COrdialement,

    PGZ

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2010
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 313
    Par défaut
    Merci ca fonctionne très bien.
    Mais juste par curiosité, à quoi correspond le 0.
    Cordialement

  6. #6
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Le "0" correspond à l'index du premier champ dans l'enregistrement courant. Dans ton cas, tu vas chercher un max, donc tu as 1 seul enregistrement et le courant à l'ouverture est forcément le bon. Tu ne "montes" qu'un champ, donc ce champs a pour index 0.

    On aurait pu aussi écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    texte_SQL = "SELECT Max([N_Enregistrement]) as MaxId FROM [" & Feuille & "$]"
    ...
    lId = Rst("MaxId") +1
    SI c'est résolu, n'oublie pas

    Cordialement,

    PGZ

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2010
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 313
    Par défaut
    OK merci pour les explications

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Suppression de clé primaire en VBA
    Par Herman dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/06/2007, 15h32
  2. Réponses: 6
    Dernier message: 09/06/2006, 01h19
  3. Réponses: 2
    Dernier message: 24/04/2006, 12h27
  4. Réponses: 6
    Dernier message: 25/03/2006, 18h46
  5. [VBA] Savoir quelle est la clé primaire inséré
    Par kissmytoe dans le forum Access
    Réponses: 1
    Dernier message: 07/03/2006, 09h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo