Comment supprimer une valeurs d'une cellule d'un autre fichier

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour,
Voilà je voudrais supprimer une valeur d'une cellule d'un autre fichier excel à partir d'un Marco sans que ce fichier soit ouvert, j'arrive à le faire quand il est ouvert avec cette commande:
Workbooks("output.xlsx").Worksheets("Feuil1").Range("A1") = ""
Mais quand le fichier est pas ouvert la commande ne fonctionne pas...

Merci d'avance de vos réponse.

A voir également:

4 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
1
Utilisateur anonyme
 
Merci de ta réponse je vais regarder mais ça me semble compliqué, sa prendre beaucoup de temps à effectuer l'opération car il me faut que ça soit vraiment rapide?
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > Utilisateur anonyme
 
Re,

mais ça me semble compliqué
Tout depend de vos connaissances en VBA

Pour la rapidite, c'est fonction de votre PC
0
Utilisateur anonyme
 
J'ai juste les base en VBA
Sub exportDonneeDansCelluleClasseurFerme()
Dim Cn As ADODB.Connection
Dim Cd As ADODB.Command
Dim Rst As ADODB.Recordset
Dim Fichier As String

Fichier = "C:\Users\name\Documents\TestNode2\code2\output.xlsx"

Set Cn = New ADODB.Connection
Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;IMEX=1"""

Set Cd = New ADODB.Command
Cd.ActiveConnection = Cn
Cd.CommandText = "SELECT * FROM [Feuil1$A1:A1]"

Set Rst = New ADODB.Recordset
Rst.Open Cd, , adOpenKeyset, adLockOptimistic
Rst(0).Value = ""
Rst.Update

Cn.Close
Set Cn = Nothing
Set Cd = Nothing
Set Rst = Nothing
End Sub

J'ai essayé ce code mais j'ai une erreur "La table externe est pas au format attendu" au Cn.open, je doit mettre me fichier sous qu'elle format? J'ai du louper quelque chose...
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > Utilisateur anonyme
 
Re,

Vous pourriez repondre au message de pijaku 30 janv. 2015 à 16:35
0
Utilisateur anonyme
 
Re,
Oui je viens de lui répondre
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

C'est pour faire quoi au juste?
Effacer des données dans le classeur excel d'un collègue?

Parce que :
l'opération soit complètement invisible
et
il me faut que ça soit vraiment rapide
laissent tout de même à penser que c'est du "filoutage" que tu nous prépare là...
1
Utilisateur anonyme
 
Ah non c'est pour un projet de mon stage en gros je lance plusieurs opérations à la fois, qui viennent prendre la valeur d'une cellule dans le même fichier excel du coup faut que ça soit rapide pour que la valeur soit bonne au moment où l'opération suivante vienne prendre la valeur.
Et faut que ça soit transparent car on me l'a demandé quoi.
0
PlacageGranby Messages postés 393 Date d'inscription   Statut Membre Dernière intervention   26
 
' avec Screen updating a false,  le tout devrait être invisible comme voulu, et aussi plus rapide
Application.ScreenUpdating = False

Dim wb As Workbook
Dim ws As Worksheet
Dim chemin as string 

'** ici tu dois changer  output.xlsx pour le chemin complet pour trouver le fichier
Chemin = "c:\quelquepart\surledisquedur\output.xlsx"  

' on ouvre
Set wb = Workbooks.Open(chemin)
Set ws = wb.Worksheets("Feuil1")

'On Enregistre ce qu'on veut dans notre feuille 
ws.Range("C3").Value = "blah blah"

'on enregistre et on ferme
wb.Save
wb.Close

'On réactive screenupdating
Application.ScreenUpdating = True
0
PlacageGranby Messages postés 393 Date d'inscription   Statut Membre Dernière intervention   26 > PlacageGranby Messages postés 393 Date d'inscription   Statut Membre Dernière intervention  
 
Mon exemple va écrire dans la cellule C3.
Si au contraire tu veux prendre la données,

Tu défini une variable et tu l'assigne

Dim UneVariable as variant
UneVariable = ws.Range("C3").value
0
Utilisateur anonyme
 
Merci pour ta réponse PlacageGranby, je suis en week-end du coup j'essayerai ça lundi matin
0
Utilisateur anonyme
 
Merci je vient de tester sa fonctionne plutôt bien
0
PlacageGranby Messages postés 393 Date d'inscription   Statut Membre Dernière intervention   26
 
Bonjour,

Il y a l'avenue d'ouvrir et ferme le fichier à même la macro.

La limitation de ne pas ouvrir le fichier vient-elle de macro qui font des actions à l'ouverture/fermeture ?

Sinon, dans la dite macro, on ouvre, et on ferme hop hop, ni vu ni connu ;)

Cordialement,
0
Utilisateur anonyme
 
je ne veux pas qu'il ouvre le fichier pour que l'opération soit complètement invisible.
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Re-

Pour lire une donnée dans un classeur fermé sans connexion ADO, il y a une méthode toute simple et "instantanée"... Voir ICI.
Facile à mettre en oeuvre et très rapide.

Mais n'efface pas.

Après on peut même mettre en place un système de Timer pour réaliser cette opération tous les x secondes ou avec un intervalle moindre.
Pour cela, f8940009 prendra le relais ;-), mais en attendant, quelques pistes par là...

A suivre...

Bon week end à vous tous.
0
Utilisateur anonyme
 
Bonjour,
D'accord merci pour ton aide je regarderai sa lundi matin
Bon week-end.
0