XL 2016 VBA - Code pour écrire une plage dans une feuille d'un classeur fermé

Dudu2

XLDnaute Barbatruc
Bonjour
Quelqu'un aurait ça dans ses tiroirs ?
Cordialement

P.S. J'ai le code pour lire en classeur fermé besoin.
 
Dernière édition:
Solution
VB:
Option Explicit

Sub Test()
    Dim Fichier As String
    Dim Feuille As String
    Dim Cellule As String
    Dim Valeur As Variant
 
    Fichier = "F:\Téléchargements\Classeur1.xlsx"
    Feuille = "Feuil1"
    Cellule = "G3"
    Valeur = "Donnée XX"
 
    Call ÉcrireDansCelluleClasseurFermé(Fichier, Feuille, Cellule, Valeur)
End Sub

'----------------------------------------------------------------------
'Permet d'écrire dans une cellule d'une feuille d'un classeur fermé.
'Attention ! La cellule cible doit être dans le UsedRange de la feuille
'            ou être A1 si la feuille cible est vide.
'----------------------------------------------------------------------
Sub ÉcrireDansCelluleClasseurFermé(Fichier As String, Feuille As...

Dudu2

XLDnaute Barbatruc
en fait je déclare mes paramètre en variant Type 12! mais tél n'est pas un numérique 06 ?? ?? ?? ??
Quoiqu'on passe (numérique ou chaîne) le type sera ajusté au type de la valeur précédente dans la colonne.
Si c'est en dessous du titre "Tel", la valeur numérique 1234 sera convertie en chaîne.
Si c'est en dessous d'une valeur numérique, la valeur numérique 1234 sera conservée en numérique.
 

dysorthographie

XLDnaute Accro
en fait il faut formater les colonnes au préalable!
les cellules déjà écrient en revanche auront '06 06 etc.

1693155945851.png
 

RyuAutodidacte

XLDnaute Impliqué
Supporter XLD
Hello tous,
Ca peut toujours servir/dépanner, pour récupérer une valeur dans un fichier fermé :

VB:
Sub GetValueMyCloseFile()
Dim ThePath$, NameWB$, ShName$, MyCel$, MyValue$

    ThePath = "/Users/UserName/Downloads/"
    NameWB = "Exemple.xlsx"
    ShName = "TOTO"
    MyCel = "A3"
    
    MsgBox GetValueInCloseFile(ThePath, NameWB, ShName, MyCel)
    
End Sub

Function GetValueInCloseFile(ThePath$, NameWB$, ShName$, MyCel$)
Dim MyValue$
    MyValue = "'" & ThePath & "[" & NameWB & "]" & ShName & "'!" & Range(MyCel).Address(True, True, xlR1C1)
    GetValueInCloseFile = ExecuteExcel4Macro(MyValue)
End Function
 

Dudu2

XLDnaute Barbatruc
Chez moi en tous cas, ce n'est pas le format initial de la cellule qui détermine le résultat.
Quoique je fasse, les valeurs insérées le sont en format Standard (le format cellule initial est supplanté).

Pour placer le nombre 1234 dans les paramètres de la fonction pour la colonne Tel...

- Si la cellule précédente dans la colonne est le titre "Tel" qui est en String, ce sera le nombre 1234 en texte (cadré à gauche) en format Standard de cellule.

- Si la cellule précédente dans la colonne est la valeur numérique 1234 (cadrée à droite) sous quelque format de cellule que ce soit (Standard, Monéraire, Nombre 2 décimales, etc...), ce sera le nombre 1234 en format Standard de cellule.
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
ryu
l'original c'est celui la elle a fait le tour du monde cette fonction 🤣
VB:
Sub test()
    Dim chemin$, fichier$, feuille$, cellule As Range
    chemin = "C:\Users\polux\Desktop"
    fichier = "hhhhhtml.xls"
    feuille = "Feuil1"
    Set cellule = Range("c4")
    MsgBox GetVal_on_closed_fich(chemin, fichier, feuille, cellule)
End Sub

Function GetVal_on_closed_fich(ByVal chemin As String, ByVal fichier As String, ByVal feuille As String, cel As Range) As String
    'patricktoulon XLA closed_fich
    Dim Rc$
    Rc = "R" & cel.Row & "C" & cel.Column
    GetVal_on_closed_fich = ExecuteExcel4Macro("'" & chemin & "\[" & fichier & "]" & feuille & "'!" & Rc)
End Function
mais j'ai tendance a les enlever car 2019 et 2021 ont un shunter pour les macro4
purée ça aplus de 15 ans ce truc 🤣
 

RyuAutodidacte

XLDnaute Impliqué
Supporter XLD
re
ryu
l'original c'est celui la elle a fait le tour du monde cette fonction 🤣
VB:
Sub test()
    Dim chemin$, fichier$, feuille$, cellule As Range
    chemin = "C:\Users\polux\Desktop"
    fichier = "hhhhhtml.xls"
    feuille = "Feuil1"
    Set cellule = Range("c4")
    MsgBox GetVal_on_closed_fich(chemin, fichier, feuille, cellule)
End Sub

Function GetVal_on_closed_fich(ByVal chemin As String, ByVal fichier As String, ByVal feuille As String, cel As Range) As String
    'patricktoulon XLA closed_fich
    Dim Rc$
    Rc = "R" & cel.Row & "C" & cel.Column
    GetVal_on_closed_fich = ExecuteExcel4Macro("'" & chemin & "\[" & fichier & "]" & feuille & "'!" & Rc)
End Function
mais j'ai tendance a les enlever car 2019 et 2021 ont un shunter pour les macro4
purée ça aplus de 15 ans ce truc 🤣
re Patrick :D
ben ca marche sur mon Office 365 (mis à jour de plus ) oui ca date je confirme 🤣
 

Zon

XLDnaute Impliqué
re Patrick :D
ben ca marche sur mon Office 365 (mis à jour de plus ) oui ca date je confirme 🤣
Salut tout le monde

Merci Patrick pour l'info sur les macros XL4. c'est pour cela que dans le post 3 je ne l'utilisais plus...

c'est une procédure de John Walkenbach datant du siècle dernier., elle fonctionne d'XL 95 à Office 365 du coup.

Original de la procédure:

VB:
Private Function GetValue(Path, File, Sheet, Ref) 'John Walkenbach
  Dim Arg As String
  If Right(Path, 1) <> "\" Then Path = Path & "\"
  If Dir(Path & File) = "" Then
    GetValue = "File Not Found"
    Exit Function
  End If
 
  Arg = "'" & Path & "[" & File & "]" & Sheet & "'!" & Range(Ref) _
    .Range("A1").Address(, , xlR1C1)
  GetValue = ExecuteExcel4Macro(Arg)
''  GetValue = IIf(GetValue = 0, "", GetValue) 'modif perso Zon
End Function


Questiion subsidiaire:

Je suis sous XL 2019 , Il me semble que sous XL 2003 (et même 2007 voire 2010) on pouvait avoir 2 instances XL , ça vous parle ??

Merci pour votre retour .
 

patricktoulon

XLDnaute Barbatruc
Bonsoir @Zon
astuce N°1
une fois le premier fichier ouvert
tu va a fichier
ensuite soit nouveau ou ouvrir mais en restant appyé sur ALT
et fonctionne sur 2013 2016 2019

astuce N°2
touche window+r
la fentre d'execution s'affiche
taper excel.exe/x
une fois que excel s'affiche ben tu choisi ton fichier

voila les astuces sont simples ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 325
Membres
103 179
dernier inscrit
BERSEB50