Comment faire une boucle ?

[Résolu]
Signaler
Messages postés
91
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
15 mars 2013
-
Messages postés
181
Date d'inscription
mardi 18 novembre 2008
Statut
Membre
Dernière intervention
4 février 2011
-
Bonsoir le Forum

Voici un code que je souhaite utiliser pour copier d'un fichier Excel Ouvert vers un fichier Excel Fermé
Ce code fonctionne parfaitement bien pour un enregistrement.
J'ai sur le fichierOuvert X enregistrement (cela bouge tout les jours mais avec un limite à 1000 lignes), donc pour mettre mon fichier Fermé à jour il me faut dans l'absolue cliquer 1000 fois sur la commande déclenchant la routine d'écriture.
Ma question est donc la suivante, comment faire une boucle (For je crois)pour boucler sur toute les lignes remplies dans le fichier ouvert,
c'est à dire faire tourner ce code autant de fois qu'il y a "d'enregistrements" dans le fichier ouvert. Je ne "copie" pas les entêtes bien entendu.
j'espère ne pas avoir été trop confus dans mes explications.
je vous joint le code pour étayer mes propos.

Nb je suis relativement néophyte en la matière (VBA)merci donc de votre indulgence
Voci le code
Sub ajoutEnregistrement()
    Dim Cn As ADODB.Connection
    Dim Fichier As String, Feuille As String, strSQL As String
    Dim LaDate As Date
    Dim PrixUnit As Integer
    Dim leNom As String, lePrenom As String

    Fichier = "C:\Base.xls"
    Feuille = "Feuil1"
    
    'Les données à insérer:
    LaDate = Cells.range("A1")
    leNom = cells.range("A2")
    lePrenom = cells.range("A3")
    PrixUnit = cells.range("A4")
    
    Set Cn = New ADODB.Connection
    
    With Cn
        .Provider = "MSDASQL"
        .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
            "DBQ=" & Fichier & "; ReadOnly=False;"
        .Open
    End With

    'Les données doivent être indiquées dans le même ordre que les champs dans la base de données.
    strSQL = "INSERT INTO [" & Feuille & "$] " _
        & "VALUES (#" & LaDate & "#, " & _
        "'" & leNom & "', " & _
        "'" & lePrenom & "', " & _
        PrixUnit & ")"
    
    Cn.Execute strSQL
    
    Cn.Close
    Set Cn = Nothing
End Sub



Merci d'avance pour votre aide
Jf

1 réponse

Messages postés
181
Date d'inscription
mardi 18 novembre 2008
Statut
Membre
Dernière intervention
4 février 2011

Hello
essaie ceci (non testé mais doit marcher ):
Dim r as integer

For r=1 to 1000 step 1
'Les données à insérer:
LaDate = Cells.(r,1).Value
leNom = Cells.(r,2).Value
lePrenom = Cells.(r,3).Value
PrixUnit = Cells.(r,4).Value

Set Cn = New ADODB.Connection

With Cn
.Provider = "MSDASQL"
.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=" & Fichier & "; ReadOnly=False;"
.Open
End With

'Les données doivent être indiquées dans le même ordre que les champs dans la base de données.
strSQL = "INSERT INTO [" & Feuille & "$] " _
& "VALUES (#" & LaDate & "#, " & _
"'" & leNom & "', " & _
"'" & lePrenom & "', " & _
PrixUnit & ")"

Cn.Execute strSQL

Cn.Close
Set Cn = Nothing
Next r

BR
USERRRQI115
Simple user
Great brain