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 :

[VBA]Parcourir une liste de cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 13
    Points : 12
    Points
    12
    Par défaut [VBA]Parcourir une liste de cellule
    Bonjour,

    suite à un stage en entreprise, je dois "developpez" une maccro permettant via un dialogue entre Access et Excel de remplir des colonnes.

    Je récupere donc les données de la BD dans une nouvelle feuille mais c'est la que ça se complique, je m'explique :
    mon algorithme est le suivant :
    1. Je créé une liaison entre excel et access
    2. je récupére les données dans une nouvelle feuille que je renomme
    3. puis je dois testé pour chaque lignes si le contenu de la colonne J et de la colonne L dans ma feuille courante équivalent à respectivement celui de la colonne B et de la colonne C de la BDD.
      Si c'est le cas, le contenu de la colonne A de la BDD va se coller dans la colonne AC de la feuille courante


    A priori c'est fort simple cependant, je n'arrive pas à parcourir dynamiquement les cellules pendant mon 'for'... dans d'autre langage c'est assez simple, on concataine mais mes notions de VBAXL sont trop limite pour résoudre ce problème... Google ne ma pas beaucoup aidé non plus donc je viens demander à des professionnels

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Option Explicit
    Sub Test()
    
    'on commence par renommer notre feuille
    ActiveSheet.Name = "sources"
    
    'declaration
    Dim appAccess As Access.Application
    Dim i, j As Integer
    
    'On lance une session Access
    Set appAccess = CreateObject("Access.Application")
    
    With appAccess
        .OpenCurrentDatabase ("C:\bd_resp.mdb")
        'on ajoute une nouvelle feuille et la renomme
        Sheets.Add
        ActiveSheet.Name = "Produits"
        'on y colle le contenu de la table produit
            With ActiveSheet.QueryTables.Add(Connection:=Array("OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;" & " Data Source =C:\bd_resp.mdb"), Destination:=Range("A1"))
            .CommandType = xlCmdTable
            .CommandText = Array("Produit")
            .FieldNames = True
            .RowNumbers = False
            .PreserveFormatting = True
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .AdjustColumnWidth = True
            .PreserveColumnInfo = True
            .Refresh BackgroundQuery:=False
          End With
          
          'Requete de tri
          'Pour chaque lignes du tableau, on requete les données.
          For i = 1 To 50
                If Sheets("Produits").Range("B"+i).Value = Sheets("Sources").Range("J"+i).Value Then
                    If Sheets("Produits").Range("C"+i).Value = Sheets("Sources").Range("L"+i).Value Then
                        Sheets("Sources").Range("AC"+i).Value = Sheets("Produits").Range("D"+i).Value
                    End If
                End If
          Next i
          
          
          
    End With
    'Quitte Access
    appAccess.Quit
    
    'Réinitialise l'objet
    Set appAccess = Nothing
    
    
    End Sub
    Donc pour résumer, que mettre à la place du "+i"

    Cordialement

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Je ne sais pas si ça peut t'aider, mais je te conseille de regarder la :

    http://www.developpez.net/forums/sho...d.php?t=307168

    Tu trouvera peut etre surement des réponses a ton bonheur. Si ce n'est pas le cas, je te conseille d'écrire plutot dans le forum VBa, tu aura aussi surement des réponses. Après VBA ou VBA Access, j'en sais trop rien
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Mauvais endroit O_o Du VB sous Excel...

    Enfin bon, navré

    Bon ca doit être en exposant mon problème que j'ai trouvé la solution
    je copie mon code qui marche

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Option Explicit
    Sub Test()
     
    'on commence par renommer notre feuille
    ActiveSheet.Name = "sources"
     
    'declaration
    Dim appAccess As Access.Application
    Dim i, j As Integer
     
    'On lance une session Access
    Set appAccess = CreateObject("Access.Application")
     
    With appAccess
        .OpenCurrentDatabase ("C:\bd_resp.mdb")
        'on ajoute une nouvelle feuille et la renomme
        Sheets.Add
        ActiveSheet.Name = "Produits"
        'on y colle le contenu de la table produit
            With ActiveSheet.QueryTables.Add(Connection:=Array("OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;" & " Data Source =C:\bd_resp.mdb"), Destination:=Range("A1"))
            .CommandType = xlCmdTable
            .CommandText = Array("Produit")
            .FieldNames = True
            .RowNumbers = False
            .PreserveFormatting = True
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .AdjustColumnWidth = True
            .PreserveColumnInfo = True
            .Refresh BackgroundQuery:=False
          End With
     
          'Requete de tri
          'Pour chaque lignes du tableau, on requete les données.
          For i = 1 To 50
            For j = 1 To 50
                If Sheets("Produits").Range("B" & j).Value = Sheets("Sources").Range("J" & i).Value Then
                    If Sheets("Produits").Range("C" & j).Value = Sheets("Sources").Range("L" & i).Value Then
                        Sheets("Sources").Range("AC" & i).Value = Sheets("Produits").Range("D" & j).Value
                    End If
                End If
            Next j
          Next i
     
     
     
    End With
    'Quitte Access
    appAccess.Quit
     
    'Réinitialise l'objet
    Set appAccess = Nothing
     
     
    End Sub
    la concaténation fonctionne avec le '&'
    et j'avais un grossièr erreur de traduction d'algo

    Résolu

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

Discussions similaires

  1. [VBA Excel] Parcourir une zone de cellules
    Par Jipété dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 27/11/2006, 09h38
  2. [VBA] Parcourir une plage de cellule
    Par Dinytro dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/09/2005, 08h18
  3. Parcourir une liste deroulante
    Par brandon dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 17/02/2005, 19h03
  4. parcourir une liste de la fin vers le début
    Par zdra dans le forum SL & STL
    Réponses: 12
    Dernier message: 06/02/2005, 18h40
  5. [langage] Parcourir une list de array
    Par nledez dans le forum Langage
    Réponses: 4
    Dernier message: 08/11/2004, 17h11

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