La bonne nouvelle??? be je viens de finir il y a 1h une serie de fonctions qui font exactement ce que tu demandes!
En gros j'ai 2 fichiers excel... l'un d'entre eux doit alimenter l'autre... les users doivent cliquer sur la ligne a updater, puis cliquer sur un bouton qui lance une macro et bim...la seule contrainte, c'est que les 2 fichiers aient au moins une colonne ID qui fasse le lien... Voilà le code:
Code :
- Dim appxl As Excel.Application
- Dim fichier As Window
- Dim feuille As Worksheet
- Dim id As String
- Dim param1 As String
- Dim param2 As String
- Sub connectExcel()
- Set appxl = CreateObject("Excel.application" )
- With appxl
- .Workbooks.Open "file1.xls"
- .Visible = False
- End With
- Set feuille = appxl.Sheets("Feuil1" )
- End Sub
- Sub disconnectExcel()
- appxl.Workbooks(Workbooks.Count).Save
- appxl.Workbooks(Workbooks.Count).Close
- End Sub
- Function retrieveData()
- Selection.Rows.EntireRow.Select
-
- Rng = Selection.Rows.Count
- If (Rng <> 1) Then
- retrieveData = 0
- MsgBox "Vous devez selectionner UNE et UNE SEULE ligne "
- Exit Function
- Else
- id = Selection.Columns(1)
- param1 = Selection.Columns(4)
- param2 = Selection.Columns(8)
- retrieveData = id
- Exit Function
- End If
-
- End Function
- Function chercherLigne(id)
- i = 0
- chercherLigne = 0
- Dim cell As Range
- For Each cell In feuille.Range("A1:A300" )
- i = i + 1
- If cell.Value <> "" Then
- If Int(cell.Value) = Int(id) Then
- chercherLigne = i
- Exit Function
- End If
-
- End If
-
- Next
- End Function
- Function BoutonUpdate_QuandClic()
- connectExcel
- result = retrieveData
- If (result <> 0) Then
- ligne = chercherLigne(result)
- If (ligne <> 0) Then
- feuille.Cells(ligne, "B" ) = param1
- feuille.Cells(ligne, "D" ) = param2
- Else
- MsgBox "ID non trouvé dans le fichier destination"
- End If
- disconnectExcel
-
- End If
-
- End Function
|
Si tu as des questions...n'hesite pas... (je sais je sais..je commente pas mon code! mea culpa