airvb
XLDnaute Nouveau
Bonjour,
A la fermeture d'un premier fichier (A) , j'enregistre une valeur ds un fichier fermé (48.xlsx)
via le code AAA ci dessous.
Je récupère les valeurs enregistrées avec le code BBB dans un autre tableau (B)
Le soucis, c'est que la valeur enregistrée dans le fichier fermé est un "nombre sous forme de texte".
Et bien évidemment la valeur récupérée par le code BBB dans le fichier (B) est mal interprétée .
Le format des cellules de la colonne ds le fichier fermé est bien "nombre"
Ds le fichier émetteur , la formule de la cellule ap8 du fichier A :
=CNUM(NB.SI(F10:F39;"48H")) qui donne une valeur numérique.
Comment faire pour enregistrer un nombre qui reste nombre ?
merci
Code AAA
code BBB
A la fermeture d'un premier fichier (A) , j'enregistre une valeur ds un fichier fermé (48.xlsx)
via le code AAA ci dessous.
Je récupère les valeurs enregistrées avec le code BBB dans un autre tableau (B)
Le soucis, c'est que la valeur enregistrée dans le fichier fermé est un "nombre sous forme de texte".
Et bien évidemment la valeur récupérée par le code BBB dans le fichier (B) est mal interprétée .
Le format des cellules de la colonne ds le fichier fermé est bien "nombre"
Ds le fichier émetteur , la formule de la cellule ap8 du fichier A :
=CNUM(NB.SI(F10:F39;"48H")) qui donne une valeur numérique.
Comment faire pour enregistrer un nombre qui reste nombre ?
merci
Code AAA
Code:
Sub save48h()
Dim Cn As ADODB.Connection
Dim Cd As ADODB.Command
Dim Rst As ADODB.Recordset
Dim nomfich As String
Dim cellule, feuille, dossier As String
Dim ligne As Integer
'nomfich = ""V:\test\48h.xlsx"
feuille = "recap$" 'n'oubliez pas d'ajouter $ au nom de la feuille.
' on détermine la ligne à modifier ds recap
' on ajoute la différence à la date de référence
ligne = Range("AO8") - Range("AO9") + 2 ' + 1 pour la ligne des noms + 1 offset
'Adresse de la cellule contenant la donnée à insérer ds le fichier recap
cellule = "B" & ligne
Set Cn = New ADODB.Connection
'--- Connexion ---
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& nomfich & ";Extended Properties=""Excel 12.0 Xml;HDR=NO;"""
.Open
End With
'-----------------
' Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
' "Data Source=" & nomfich & ";" & _
' "Extended Properties=""Excel 8.0;HDR=No;"";"
'
Set Cd = New ADODB.Command
Cd.ActiveConnection = Cn
Cd.CommandText = "SELECT * FROM [" & feuille & cellule & ":" & cellule & "]"
Set Rst = New ADODB.Recordset
Rst.Open Cd, , adOpenKeyset, adLockOptimistic
Rst(0).Value = Range("AP8").Value
Rst.Update
Cn.Close
Set Cn = Nothing
Set Cd = Nothing
Set Rst = Nothing
End Sub
code BBB
Code:
' mise à jour à l'ouverture des 48H
Sub maj48h()
Dim Cn As ADODB.Connection
Dim Fichier, alpha As String
Dim NomFeuille As String, texte_SQL As String
Dim Rst As ADODB.Recordset
Dim lastimmat, i, j, k, A, B, C As Integer
Dim nomfich As String
Dim recap48h, temp As Worksheet
'nom de la feuille qui récupère les datas
Set recap48h = Worksheets("visite48h")
Set temp = Worksheets("temp")
'Nom de la feuille dans le classeur fermé
NomFeuille = "recap"
nomfich = "V:\test\48h.xlsx"
' va sur l'onglet caracteristique
recap48h.Activate
Set Cn = New ADODB.Connection
'--- Connexion ---
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& nomfich & ";Extended Properties=""Excel 12.0;HDR=NO;"""
.Open
End With
'-----------------
'Set Cn = New ADODB.Connection
'
''--- Connexion ---
' With Cn
' .Provider = "Microsoft.Jet.OLEDB.4.0"
' .ConnectionString = "Data Source=" & nomfich & _
' ";Extended Properties=""Excel 8.0;HDR=No;"";"
' .Open
' End With
'
' 'Extended Properties=Excel 8.0 est utilisé pour les versions d'Excel 97, 2000 et 2002.
'-----------------
'Définit la requête.
'/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille.
texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"
Set Rst = New ADODB.Recordset
Set Rst = Cn.Execute(texte_SQL)
'Ecrit le résultat de la requête dans la cellule A2
Range("A1").CopyFromRecordset Rst
'--- Fermeture connexion ---
Cn.Close
Set Cn = Nothing
' retour sur feuille mat
End Sub