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

VBA Access Discussion :

Mettre à jour les enregistrements vides d'une table avec la valeur du dessus


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 3
    Par défaut Mettre à jour les enregistrements vides d'une table avec la valeur du dessus
    Bonjour,

    J'ai une table, décrivant les affaires hiérarchisées d'un programme d'investissement (PI), qui contient 4 champs (niveau, poste du programme d'investissement, affaire, montant investi) et qui ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Niveau     Poste du PI          Affaire   Montant investi
    4          Entreprise
     3         Domaine X
      2        Sous-domaine SX1
       1                            Aff123    20 k€
       1                            Aff456    04 k€
       1                            Aff789    17 k€
      2        Sous-domaine SX2
       1                            Aff321    45 k€
       1                            Aff275    20 k€
     3         Domaine Y
      2        Sous-domaine SY1
       1                            Aff953    97 k€
      2        Sous-domaine SY2
       1                            Aff432    01 k€
       1                            Aff685    59 k€
    J'ai besoin de retravailler cette table, extraite de SAP (application sur laquelle je ne peux pas toucher à la table), pour pouvoir l'utiliser. Il faut que je lui donne cette forme pour pouvoir faire des calculs :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Niveau     Poste du PI          Affaire   Montant investi
    4          Entreprise
     3         Domaine X
      2        Sous-domaine SX1
       1       Sous-domaine SX1     Aff123    20 k€
       1       Sous-domaine SX1     Aff456    04 k€
       1       Sous-domaine SX1     Aff789    17 k€
      2        Sous-domaine SX2
       1       Sous-domaine SX2     Aff321    45 k€
       1       Sous-domaine SX2     Aff275    20 k€
     3         Domaine Y
      2        Sous-domaine SY1
       1       Sous-domaine SY1     Aff953    97 k€
      2        Sous-domaine SY2
       1       Sous-domaine SY2     Aff432    01 k€
       1       Sous-domaine SY2     Aff685    59 k€
    Autrement dit il faut que je dise à Access quelque chose du genre :
    "remplis tout enregistrement vide du champ 'Poste du PI' avec la valeur du dessus".

    Je ne sais pas si ce genre de chose doit être fait en VBA ou en SQL et d'autre part, je ne vois pas comment indiquer à Access "la valeur du dessus"...

    Si vous pouvez m'aider... merci d'avance.

    Gillou

  2. #2
    Membre Expert Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Par défaut
    Bonsoir,

    Voici une petite fonction qui permet de réaliser ce que tu souhaites.

    Dans cet exemple :
    J'ai nommé ma table tblSAP
    Le champs concerné je l'ai renommé : Poste_du_PI

    A toi d'ajuster tout cela en fonction de ta réalité et, surtout, n'oublies pas de sauvegarder ta table AVANT de tester la fonction (chez moi cela fonctionne )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Public Function RempliSAP()
    Dim db          As Database
    Dim rst         As Recordset
    Dim I           As Integer
    Dim nb          As Integer
    Dim strPoste    As String
     
    Set db = CurrentDb
    Set rst = db.OpenRecordset("tblSAP", dbOpenDynaset)
     
        rst.MoveLast
        nb = rst.RecordCount
        rst.MoveFirst
        For I = 1 To nb
            If IsNull(rst("Poste_du_PI")) Then
                rst.Edit
                rst("Poste_du_PI").Value = Nz(strPoste)
                rst.Update
            End If
            strPoste = rst("Poste_du_PI")
            rst.MoveNext
        Next I
     
    Set db = Nothing
    Set rst = Nothing
     
    End Function

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 3
    Par défaut
    Bonsoir,
    Merci beaucoup pour ta réponse.
    J'ai un petit souci lors de l'exécution du code comme le montre l'image : il me surligne en jaune le .Edit et me met "Membre de méthode ou de données introuvable".
    Des recherches sur ce message d'erreur ne m'ont rien appris de très utile, je ne sais pas quoi faire.
    Une idée ?
    Merci, à+.
    Images attachées Images attachées  

  4. #4
    Membre Expert Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Par défaut
    Il te faut regarder du côté des Références (dans la fenêtre VBA, cliquer sur le menu "Outils" puis références) et regarde celles qui sont activées.

    Pour info, je te transmet une image des miennes, je ne sais pas de laquelle il s'agit... alors essayes-les

  5. #5
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 3
    Par défaut
    Citation Envoyé par bernardmichel Voir le message
    Pour info, je te transmet une image des miennes, je ne sais pas de laquelle il s'agit... alors essayes-les
    C'est Microsoft Windows Common Controls-2 qu'il me manquait. Maintenant ça marche parfaitement, merci beaucoup pour ton aide.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/04/2013, 17h34
  2. Réponses: 2
    Dernier message: 03/04/2013, 12h04
  3. [AC-2007] mettre à jour champs oui/non d'une table avec update
    Par atech dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 20/09/2011, 08h45
  4. Identifier les enregistrements Lu d'une table
    Par aityahia dans le forum Bases de données
    Réponses: 3
    Dernier message: 25/03/2006, 18h50
  5. supprimer un enregistrement vide dans une table oracle
    Par shurized dans le forum Bases de données
    Réponses: 11
    Dernier message: 07/09/2004, 16h55

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