OVH Cloud OVH Cloud

Génération dynamique de formules sous VBA

3 réponses
Avatar
mouspi
Bonjour à tous,

J'ai une appli qui génère des feuilles de calcul, avec 2 champs dans chaque
feuille : nommés "report" et "solde"

Dans chaque nouvelle feuille, je dois faire référence à une donnée de la
feuille précédente;

Par exemple :
- sous EXCEL, une fois la feuille "Juillet 2005" créée,
je peux aisément saisir dans le champ "report", la formule "='Juin
2005'!solde"

Mais comment faire la même chose sous VBA :
- j'ai testé
Sheets(i).[report].= Sheets(i - 1).[solde].Name
je vois bien apparaître ='Juin 2005'!solde dans la cellule "report" de la
feuiile Juillet 2003,

mais pour que cette formule soit prise en compte, je dois manuellement :
- la sélectionner
- puis cliquer sur la touche"Entrée"

Est-il possible de générer cette séquence automatiquement sous VBA , ou bien
d'écrire la formule d'une autre manière ?

Quelqu'un a-t-il de bonnes idées ?

Merci de votre aide

mouspi

3 réponses

Avatar
Alain CROS
Bonjour.

A adapter ...

Sub Ajout()
Dim WS As Worksheet
Set WS = Worksheets.Add(, Worksheets(Worksheets.Count))
With WS
.Name = "Juillet 2005"
.Names.Add "Report", [A1]
.[Report].Formula = "=" & Worksheets(.Index - 1#).Name & "!Report"
End With
Set WS = Nothing
End Sub

Alain CROS

"mouspi" a écrit dans le message de news: #6Ff$
| Bonjour à tous,
|
| J'ai une appli qui génère des feuilles de calcul, avec 2 champs dans chaque
| feuille : nommés "report" et "solde"
|
| Dans chaque nouvelle feuille, je dois faire référence à une donnée de la
| feuille précédente;
|
| Par exemple :
| - sous EXCEL, une fois la feuille "Juillet 2005" créée,
| je peux aisément saisir dans le champ "report", la formule "='Juin
| 2005'!solde"
|
| Mais comment faire la même chose sous VBA :
| - j'ai testé
| Sheets(i).[report].= Sheets(i - 1).[solde].Name
| je vois bien apparaître ='Juin 2005'!solde dans la cellule "report" de la
| feuiile Juillet 2003,
|
| mais pour que cette formule soit prise en compte, je dois manuellement :
| - la sélectionner
| - puis cliquer sur la touche"Entrée"
|
| Est-il possible de générer cette séquence automatiquement sous VBA , ou bien
| d'écrire la formule d'une autre manière ?
|
| Quelqu'un a-t-il de bonnes idées ?
|
| Merci de votre aide
|
| mouspi
|
|
Avatar
mouspi
Merci Alain,

J'ai adapté, ... et cela fonctionne très bien .

Juste une question :
- quel est le rôle du caractère # dans Worksheets(.Index-1#) ?

Bonne journée

mouspi


"Alain CROS" a écrit dans le message de news:
%23LP3C6$
Bonjour.

A adapter ...

Sub Ajout()
Dim WS As Worksheet
Set WS = Worksheets.Add(, Worksheets(Worksheets.Count))
With WS
.Name = "Juillet 2005"
.Names.Add "Report", [A1]
.[Report].Formula = "=" & Worksheets(.Index - 1#).Name & "!Report"
End With
Set WS = Nothing
End Sub

Alain CROS

"mouspi" a écrit dans le message de news:
#6Ff$
| Bonjour à tous,
|
| J'ai une appli qui génère des feuilles de calcul, avec 2 champs dans
chaque
| feuille : nommés "report" et "solde"
|
| Dans chaque nouvelle feuille, je dois faire référence à une donnée de la
| feuille précédente;
|
| Par exemple :
| - sous EXCEL, une fois la feuille "Juillet 2005" créée,
| je peux aisément saisir dans le champ "report", la formule "='Juin
| 2005'!solde"
|
| Mais comment faire la même chose sous VBA :
| - j'ai testé
| Sheets(i).[report].= Sheets(i - 1).[solde].Name
| je vois bien apparaître ='Juin 2005'!solde dans la cellule "report" de
la
| feuiile Juillet 2003,
|
| mais pour que cette formule soit prise en compte, je dois manuellement
:
| - la sélectionner
| - puis cliquer sur la touche"Entrée"
|
| Est-il possible de générer cette séquence automatiquement sous VBA , ou
bien
| d'écrire la formule d'une autre manière ?
|
| Quelqu'un a-t-il de bonnes idées ?
|
| Merci de votre aide
|
| mouspi
|
|





Avatar
jps
rien d'autre qu'un exercice digital de ce chirogourdiste d'AV, mouspi, dont
worry...
AMHA, le Alt Gr + # est la manip' clavier la plus pénible à faire
jps

"mouspi" a écrit dans le message de news:
%
- quel est le rôle du caractère # dans Worksheets(.Index-1#) ?
mouspi


"Alain CROS" a écrit dans le message de news:
%23LP3C6$
Bonjour.

A adapter ...

Sub Ajout()
Dim WS As Worksheet
Set WS = Worksheets.Add(, Worksheets(Worksheets.Count))
With WS
.Name = "Juillet 2005"
.Names.Add "Report", [A1]
.[Report].Formula = "=" & Worksheets(.Index - 1#).Name & "!Report"
End With
Set WS = Nothing
End Sub

Alain CROS

"mouspi" a écrit dans le message de news:
#6Ff$
| Bonjour à tous,
|
| J'ai une appli qui génère des feuilles de calcul, avec 2 champs dans
chaque
| feuille : nommés "report" et "solde"
|
| Dans chaque nouvelle feuille, je dois faire référence à une donnée de
la
| feuille précédente;
|
| Par exemple :
| - sous EXCEL, une fois la feuille "Juillet 2005" créée,
| je peux aisément saisir dans le champ "report", la formule "='Juin
| 2005'!solde"
|
| Mais comment faire la même chose sous VBA :
| - j'ai testé
| Sheets(i).[report].= Sheets(i - 1).[solde].Name
| je vois bien apparaître ='Juin 2005'!solde dans la cellule "report" de
la
| feuiile Juillet 2003,
|
| mais pour que cette formule soit prise en compte, je dois manuellement
:
| - la sélectionner
| - puis cliquer sur la touche"Entrée"
|
| Est-il possible de générer cette séquence automatiquement sous VBA , ou
bien
| d'écrire la formule d'une autre manière ?
|
| Quelqu'un a-t-il de bonnes idées ?
|
| Merci de votre aide
|
| mouspi
|
|