Bonjour à tous,
Je suis complètement bloqué sur un codage. Je voudrais à partir d'un fichier "File_Source.xlsx" importer ses valeurs vers un fichier "File_Target".
En particulier, je voudrais modifier la colonne nommée "AModif" (l'endroit de la colonne peut varier !) dans le fichier "File_Target" à partir de la colonne C de mon fichier "File_Source".
Pour cela, je voudrais utiliser une clef unique "Id".
Dans la mesure où cette modif doit être rapide et s'effectuer par la suite dans plusieurs fichiers, je préférerais passer par une méthode ADODB. Malheureusement je ne suis pas familiarisé avec la méthode et j'ai perdu mes notions de SQL.
J'ai réussi à updater mes valeurs via un code SQL UPDATE Feuill$ SET Id1=ChampStocké(i) WHERE AModif=ChampStocké2(i).
Malheureusement en fonction des fichiers, le programme va penser que la colonne clef "Id" est numérique, parfois il va penser que la colonne clef est texte. Serait-il possible de ne rapprocher QUE si le champ est considéré comme numérique ?
Quelqu'un saurait-il m'aider ?
Merci beaucoup,
Novice_vba
Edit: Je vois que personne n'a pu m'aider. J'aurais du donner mon code, désolé. Le voici (dans AModif(i) et Id(i) se trouvent des valeurs pré-enregistrées du fichier "File_Source") :
Le problème est que dans ce code, je considère Id(i) comme nécessairement numérique. Or la colonne sur Excel comprend également du texte. Je voudrais que s'il y a du texte, le rapprochement ne se fasse pas, mais que les autres lignes avec des valeurs numériques soient quand même analysées ! Ce n'est vraiment pas possible ?
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 Exemple(Fichier As String, NomFeuille As String) Dim Cn As ADODB.Connection Dim Cd As ADODB.Command Dim Rst As ADODB.Recordset 'Définit le classeur fermé servant de base de données 'Fichier = "C:\Documents and Settings\mimi\dossier\NomClasseur.xlsx" 'Nom de la feuille dans le classeur fermé 'NomFeuille = "Feuil1" Set Cn = New ADODB.Connection '--- Connexion --- With Cn .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _ & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;""" .Open End With '----------------- For i = 1 To NbIssue strSQL = "UPDATE [" & NomFeuille & "$] SET " & _ "`AModif` = '" & AModif(i) & "' WHERE `Id` = " & Id(i) Cn.Execute strSQL, DbFailOnError Next i '--- Fermeture connexion --- Cn.Close Set Cn = Nothing Set Cd = Nothing End Sub
Merci d'avance,
N'hésitez pas à me demander si je ne suis pas clair
Partager