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

Résolu/Fermé
Utilisateur anonyme - 30 janv. 2015 à 11:32
 Utilisateur anonyme - 2 févr. 2015 à 10:55
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
30 janv. 2015 à 14:59
1
Utilisateur anonyme
30 janv. 2015 à 16:18
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702 > Utilisateur anonyme
30 janv. 2015 à 16:34
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
30 janv. 2015 à 16:39
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702 > Utilisateur anonyme
30 janv. 2015 à 16:42
Re,

Vous pourriez repondre au message de pijaku 30 janv. 2015 à 16:35
0
Utilisateur anonyme
30 janv. 2015 à 16:49
Re,
Oui je viens de lui répondre
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
30 janv. 2015 à 16:35
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
30 janv. 2015 à 16:48
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 mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26
30 janv. 2015 à 19:14
' 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 mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26 > PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019
30 janv. 2015 à 19:21
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
31 janv. 2015 à 12:36
Merci pour ta réponse PlacageGranby, je suis en week-end du coup j'essayerai ça lundi matin
0
Utilisateur anonyme
2 févr. 2015 à 09:32
Merci je vient de tester sa fonctionne plutôt bien
0
PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26
30 janv. 2015 à 15:37
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
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
31 janv. 2015 à 00:43
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
31 janv. 2015 à 12:38
Bonjour,
D'accord merci pour ton aide je regarderai sa lundi matin
Bon week-end.
0