Bonjour,
J'utilise le code suivant pour mettre à jour un fichier XLSX fermé. En quelque sorte je m'en sert de base.
Aujourd'hui le code fonctionne correctement pour mettre à jour les 26 colonnes.
Sauf que j'aimerais ajouter une condition pour les 5 dernières colonnes.
J'ai écrit le code simplement mais cela ne fonctionne pas :
En fait j'en déduit que le Rst(i).Value = "" ne passe pas.
Avez-vous une solution à me proposer ?
Merci
A+
J'utilise le code suivant pour mettre à jour un fichier XLSX fermé. En quelque sorte je m'en sert de base.
VB:
Sub Sauvegarder()
' Chemin d'accès de la base
Sfichier = ThisWorkbook.Path & "\Base.xlsx"
'Nom de la feuille dans le classeur fermé
NomFeuille = "BaseFI"
' Créer la connexion XLSX
Set Cn = New ADODB.Connection
With Cn
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Mode=16;Data Source=" _
& Sfichier & ";Extended Properties=""Excel 12.0;HDR=NO;Persist Security Info=False;"";"
.Open
End With
Set Cd = New ADODB.Command
Cd.ActiveConnection = Cn
' Ouvrir 1000000 lignes d'enegistrement
Cd.CommandText = "SELECT * FROM [BaseFI$A1:AA1000000]"
Set Rst = New ADODB.Recordset
Rst.Open Cd, , adOpenKeyset, adLockOptimistic
' Boucler sur plusieurs lignes
DernLigne = Sheets("Fiche").Range("A" & Rows.Count).End(xlUp).Row
For L = 20 To DernLigne
' Chercher la valeur dans la BdD
Rst.Find "F1 = '" & Cells(L, 1) & "'", , adSearchForward, 1
' Si on se retrouve à la fin des enregistrement on en créé un nouveau
If Rst.EOF = True Then Rst.AddNew
' On rempli la ligne d'enregistrement avec les valeur
For i = 0 To 26 ' Mettre ici le nombre de champs -1
If i < 22 Then Rst(i).Value = Sheets("Fiche").Cells(L, 1 + i)
If i >= 22 And Rst(i).Value = "" Then Rst(i).Value = Sheets("Fiche").Cells(L, 1 + i)
Next i
Next L
' Metre à jour la ligne d'enregistrement
Rst.Update
' Fermer la connexion
Cn.Close
' Effacer les variables objet
Set Cn = Nothing
Set Cd = Nothing
Set Rst = Nothing
End Sub
Aujourd'hui le code fonctionne correctement pour mettre à jour les 26 colonnes.
Sauf que j'aimerais ajouter une condition pour les 5 dernières colonnes.
J'ai écrit le code simplement mais cela ne fonctionne pas :
Code:
If i >= 22 And Rst(i).Value = "" Then Rst(i).Value = Sheets("Fiche").Cells(L, 1 + i)
En fait j'en déduit que le Rst(i).Value = "" ne passe pas.
Avez-vous une solution à me proposer ?
Merci
A+
Dernière édition: