XL 2019 [Résolu] VBA: Lancez un code écrit dans une celulle

Fredox

XLDnaute Occasionnel
Bonjour,

Je souhaite lancer un code vba qui est écrit dans une celulle:
Dans B5 j'ai :
VB:
Environ("ALLUSERSPROFILE")

Je souhaite lancer mon code afin qu'il écrive le résultat dans C5
(je fais une boucle avec beaucoup d'autre code pour en avoir les résultats)

Bien sur, je je fais le code ci-dessous, il me recopie le contenu
Code:
Sheets("Feuille1").Range("C5").Value = Range("B5")

Merci
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Fredox, Staple,

sur mon PC : ALLUSERSPROFILE = C:\ProgramData

c'est donc le dossier pour les données publiques utilisées par les programmes ;
c'est valable pour mon Windows 7, et je sais que c'est pareil pour les versions
de Windows qui ont suivi : 8.0 ; 8.1 ; 10.

comme Staple, je ne vois pas bien à quoi ça peut servir vu que c'est pareil
sur tous les PC ! mébon, voici quand même un fichier joint.

fais Ctrl e ➯ tu as ce que tu veux en C5 :

Image.jpg

VB:
Option Explicit

Sub Essai()
  Dim chn$, lng As Byte
  chn = [B5]: lng = Len(chn)
  If lng < 12 Then Exit Sub
  chn = Mid$(chn, 10)
  [C5] = Environ$(Left$(chn, lng - 11))
End Sub
note que ce code VBA marchera aussi pour une autre variable d'environnement. ;)

soan
 

Pièces jointes

  • Exo Fredox.xlsm
    13.1 KB · Affichages: 11

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

J'ai compris la question différemment
Je souhaite lancer un code vba qui est écrit dans une celulle
Ce que fait l'exemple ci-dessous
01_Why.jpg

1) La cellule contient une ligne de code VBA
2) Cette ligne est exécutée par VBE
NB: Tout contenu VBA dans la cellule sera exécuté.

Maintenant reste le questionnement posé dans le message#3.
 

soan

XLDnaute Barbatruc
Inactif
Bonsoir Staple,

tu as mis en A1 une instruction VBA valide : ok ; mais comment as-tu fait
pour exécuter le code VBA qui est dans la cellule A1 ?

si tu as simplement copié l'instruction dans une sub, ça compte pas !
le but est bien d'exécuter le code de A1 ; donc l'instruction de la sub
doit utiliser la cellule A1, et pas une copie du code VBA !

sinon, ça serait trop facile ! 😜 :D


soan
 

Staple1600

XLDnaute Barbatruc
Re, Bonsoir soan

soan
Relis mon message
C'est VBE qui éxécute ce qu'il y a dans la cellule
(Aucun copier/coller)
Et comme indiqué dans mon 1er message, j'avais cela dans mes archives.

Mais si j'ai mal interprété la question de Fredox, alors ta proposition et celle de patricktoulon suffiront.
 

soan

XLDnaute Barbatruc
Inactif
@Staple1600

« C'est VBE qui éxécute ce qu'il y a dans la cellule »

pour moi, Excel interprète et exécute les formules qu'il y a dans les cellules ;
mais VBE n'exécute pas le contenu des cellules ; et par exemple, si y'a une
fonction Excel que VBE connaît pas, VBE doit utiliser WorksheetFunction
pour y arriver ! il y a aussi Evaluate(), mais ça sert pas pour du code VBA,
tout au plus pour du code de macros Excel4.

tu n'as pas indiqué comment VBE exécute l'instruction en cellule A1 !
alors comment ? si t'as une méthode, je suis preneur ! y'a bien Shell,
mais ça peut pas servir ici, car le retour de Shell est l'ID de l'appli qui
est lancée, ça retourne pas la valeur d'une variable d'environnement.

@Fredox : bonjour, j'suis très content qu't'aies l'embarras du choix ! 😜 🤣
(mieux vaut trop de solutions que pas assez ! 😛 😁)


soan
 
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
=> Staple

j'ai vu le code VBA de ton post #11 ; bien sûr, c'est facile, et j'sais le faire aussi !
mais ton code VBA n'utilise pas en paramètre la cellule A1 ! j'en profite pour
dire ceci @Fredox : ça aurait été bien plus simple si A1 contenait seulement
« ALLUSERSPROFILE » et pas « Environ("ALLUSERSPROFILE") » !

c'est pour ça que le code VBA de @patricktoulon et le mien enlèvent tout
ce qu'il y a en trop : on garde seulement "ALLUSERSPROFILE" puis on
l'utilise avec l'instruction VBA Environ() ou Environ$() ; cette instruction
n'est donc pas celle qui est écrite en cellule A1 !


soan
 

Staple1600

XLDnaute Barbatruc
Re

soan
Encore une fois, merci de lire mes messages attentivement :rolleyes:
Maintenant, si j'étais moi, et si il s'agit de faire ceci.
Donc je suppute, puisque Fredox n'a toujours pas répondu précisément sur le contexte et le pourquoi.
Donc il s'agit uniquement d'une question relative à ENVIRON
alors ce que j'évoquais avoir dans mes archives aura à vocation à rester dans mes archives.

Et si il s'agit de lister les variables d'Environ, inutile de les stocker au préalable dans des cellules (comme semble l'avoir fait Fredox)

Le code posté dans le message#11 suffit.
 

soan

XLDnaute Barbatruc
Inactif
=> Staple

ah oui, j'ai compris ! tu as volontairement proposé un code VBA
qui est complètement indépendant de la cellule A1 ; tu as tout
à fait raison ! c'est c'que j'aurais fait aussi dès l'départ ! :)

mais il semble que @Fredox part d'un fichier où c'est comme
il l'a décrit ; et que les cellules de la colonne A1 doivent être
utilisées ; même si on on comprend pas bien pourquoi c'est
comme ça ; peut-être que Fredox a eu ce fichier tel que, que
c'est pas lui qui l'a fait, et qu'il doive l'utiliser ainsi ?

(moi aussi, j'suis curieux du contexte et du pourquoi !)


soan
 

Discussions similaires

Réponses
2
Affichages
121

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 535
dernier inscrit
moimeme1