Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/10/2011, 05h54   #1
Invité de passage
 
Homme Fabrice
Étudiant
Inscription : octobre 2011
Messages : 1
Détails du profil
Informations personnelles :
Nom : Homme Fabrice
Localisation : Suisse

Informations professionnelles :
Activité : Étudiant
Secteur : Bâtiment

Informations forums :
Inscription : octobre 2011
Messages : 1
Points : 0
Points : 0
Par défaut Transformer une expression textuelle de formule en formule active

Bonjour,

Je planche sur un problème depuis un moment et je n'arrive toujours pas à trouver de solutions.

J'aimerai créer une macro qui me permette de placer le signe = devant une formule.

Exemple: j'ai dans ma cellule le contenu suivant : 8+5*1

je voudrai créer un macro qui me copie le contenu de cette cellule dans la cellule de droite puis me place le signe = devant afin que la macro me renvoie le résultat.

En faisant ça, je peux toujours avoir en vue la formule et dans la case d'à côté le résultat qu'elle renvoie

Mon but est de pouvoir imprimer la page avec le calcul et le résultat affichés.

J'ai trouvé cette macro qui fonctionne avec plusieurs caractères mais pas avec le signe =.

Code :
1
2
3
4
5
6
Sub Ajout_Avant()
Dim cellule As Range
For Each cellule In Selection
cellule = "=" & cellule
Next cellule
End Sub
J'ai trouvé une autre solution en insérant un espace avant le signe = comme ceci:
Code :
1
2
3
4
5
6
7
 
Sub Ajout_Avant()
Dim cellule As Range
For Each cellule In Selection
cellule = " =" & cellule
Next cellule
End Sub
ça fonctionne, seulement maintenant il faudrait continuer cette macro en supprimant l'espace qui se trouve avant le signe égale, c'est donc à ce moment là que je suis bloqué et que je ne trouve pas de solutions.

Est-ce-que quelqu'un peut m'aider SVP?
forrest55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 06h44   #2
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
je ne comprends, pas c'est quoi le problème de ton code ?
tu dis vouloir écrire dans la "cellule de droite" mais tu "écris" dans la cellule courante ..!
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 08h53   #3
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonjour,

J’ai testé ta procédure légèrement modifiée
Code :
1
2
3
4
5
6
Sub Ajout_Avant()
Dim cellule As Range
    For Each cellule In Selection
        cellule.Offset(0, 1) = "=" & cellule
    Next cellule
End Sub
La formule 8+5*1 est placée en A1.
Je sélectionne A1, je lance la procédure.
Elle me renvoie bien le résultat 13 en B1

Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 08h58   #4
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Bonjour,

tu raisonnes à l'envers, si tu veux un calcul, c'est la formule qu'il faut d’abord, ensuite si tu veux séparément avoir en clair son expression texte à côté, ce n'est pas compliqué :

Tu as un formule en C1 du genre : En D1, tu fais : Onglet Formules, groupe Gestionnaire de noms, Définir un nom - comme nom tu indiques "FormuleEnClair", en bas dans Fait référence à , tu mets : et OK

ensuite dans ton code VBA :
Code :
1
2
3
4
5
6
7
8
Sub toto()
Dim I As Long
 
For I = 1 To 15
    Cells(I, 4).Formula = "=FormuleEnClair"
Next I
 
End Sub
cordialement,

Didier
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h29.


 
 
 
 
Partenaires

Hébergement Web