Enregistrement d'une valeur numerique dans un fichier ferme via ADODB.

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:
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
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 328
Membres
103 517
dernier inscrit
hbenaoun63