OVH Cloud OVH Cloud

FormulaLocal

14 réponses
Avatar
bartez
Bonsoir !

QQun peut-il me dire pourquoi la ligne suivante ne me retourne pas un
tableau contenant toutes les formules de ma feuille ?
Syntaxe_des_Formules = ActiveSheet.Cells. _
SpecialCells(xlCellTypeFormulas).FormulaLocal

Merci de votre aide

4 réponses

1 2
Avatar
bartez
Re bonsoir,
Je n'ai pas sur mes pages de formules matricielles. mais simplement une
liste de 100 voir 150 formules réparties sur toutes la pages (pas forcement
à la suite les unes des autres).
je vais revoir mes feuilles et tester ta proposition cette nuit.
Merci pour ton aide.

@+ Bartez


"michdenis" a écrit dans le message de news:
#
Bonjour Bartez,

Ceci devrait fonctionner sur l'ensemble de la plage. Sauf si tu as des
formules matricielles, elles vont se copier mais

de façon matricielle.

Je n'ai pas trouvé un moyen de pouvoir identifier les cellules ayant une
formule matricielle à partir du VBA. Si

quelqu'un connaît le moyen ... on pourra adapter la macro !


'-----------------------------
Sub CopieDeFormulesDuneFeuilleAlautre()

Dim Rg As Range, C As Range
On Error Resume Next
'Feuille source
With Worksheets("Feuil1")
Set Rg = .UsedRange.SpecialCells _
(xlCellTypeFormulas)
End With

'Feuille destination
With Worksheets("Feuil3")
For Each C In Rg
.Range(C.Address).FormulaLocal = _
Worksheets("Feuil1").Range(C.Address).FormulaLocal
Next
End With
Set Rg = Nothing: Set C = Nothing
End Sub
'-----------------------------


Salutations!


"bartez" a écrit dans le message de news:


C'est encore moi...
Je viens de voir que la variable adr ne dépasse jamais 257 caractères
alors

qu'elle devrait pouvoir en supporter environ 2 milliards.
Quand je test :
ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas).Select
pour voir ce que qui est réèlement sélectionné, j'ai bien toutes cellules
contenant des formules qui apparaissent sélectionnées. Je ne comprends pas
pourquoi adr ne récupère pas toutes ces adresses.

Si tu peux regarder ce qui pose problème, parce que moi je sèche !

@+ Philippe


"michdenis" a écrit dans le message de news:
#
Bonjour Bartez,

Cette macro copie toutes les formules de la feuille 2
vers la feuille 3 à la même adresse que la feuille source.

'--------------------------------
Sub CopieDeFormulesDuneFeuilleAlautre()

On Error Resume Next
'Feuille source
With Worksheets("Feuil2")
adr = .UsedRange.SpecialCells _
(xlCellTypeFormulas).Address
End With

'Cette fonction "Split" requiert excel 2000
'ou plus récent
t = Split(adr, ",")

'Feuille destination
With Worksheets("Feuil3")
For Each a In t
.Range(a).FormulaLocal = _
Worksheets("Feuil2").Range(a).FormulaLocal
Next
End With

End Sub
'-----------------------------------


Salutations!



"bartez" a écrit dans le message de news:


Bonjour Denis,

Je ne comprends pas pourquoi ma ligne de code ne fonctionne pas.
Dans la feuille il y a toujours des formules et le débuger ne me signale
aucune erreur.
enfait je cherche à copier facilement les formules d'une feuille sur une
autre et surtout au même emplacement (de façon simple et rapide) et je
pensais utiliser qqchose comme :

Ces 2 ligne pour récupérer les infos.

Addresse_des_Formules = ActiveSheet.Cells. _
SpecialCells(xlCellTypeFormulas).Address

Syntaxe_des_Formules = ActiveSheet.Cells. _
SpecialCells(xlCellTypeFormulas).FormulaLocal

Puis faire une boucle pour les reposer :

Avec addresse_des_formules je récupère bien une chaine qui je pense peut
être utilisable sans trop de mal, mais pour les formules .... j'ai rien
:(



Je vais quand même regarder ton code, mais je ne pourrais pas avant ce
soir.


@+ Bartez

"michdenis" a écrit dans le message de news:
#z5AZP#
Bonjour Bartez,

Essaie ceci :
La méthode SpecialCells provoque une erreur 91 lorsqu'elle ne trouve
pas



de cellules équivalentes à ce qu'elle cherche !

Dans la boucle For each ... J'ai mis un stop pour faciliter l'arrêt de
la


macro.

'-----------------------------------
Sub AfficherLesFormules()

Dim Rg As Range
On Error Resume Next
Set Rg = Feuil1.UsedRange.SpecialCells(xlCellTypeFormulas)

If Err <> 0 Then
Err = 0
Exit Sub
End If

For Each c In Rg
MsgBox c.FormulaLocal
Stop
Next
Set Rg = Nothing
End Sub
'-----------------------------------


Salutations!



"bartez" a écrit dans le message de news:
%

Bonsoir !

QQun peut-il me dire pourquoi la ligne suivante ne me retourne pas un
tableau contenant toutes les formules de ma feuille ?
Syntaxe_des_Formules = ActiveSheet.Cells. _
SpecialCells(xlCellTypeFormulas).FormulaLocal

Merci de votre aide















Avatar
GD
M'en parle pas Jean-paul !!!
ça n'arrete pas de déconner, 20 mn pour charger 80 messages !!!
-serveur free ne réponds pas attendre encore 60 secondes etc...

dslam-v2 - Dslam non joignable
'bdi68-1 ble59-1 boi59-1 can59-1 hel59-1 lib59-1 rsa59-1 stp25-2 tou59-1
tri59-1 weg38-1 ycl38-1' - depuis : 02 h 28 min

je me demande même comment j'arrive encore à surfer ???
@+


jps wrote:
fastoche une fois que tout le monde l'a claironné haut et fort....
si tu continues à copier, geedee, je t'envoie du côté de chez swan
isabelle (sachant qu'en inuit, swan signifie rainette)
jps

"GD" a écrit dans le message de
news:
Bonsour® "michel " ;o)))
denis wrote:
Je n'ai pas trouvé un moyen de pouvoir identifier les cellules ayant
une formule matricielle à partir du VBA. Si quelqu'un connaît le
moyen ... on pourra adapter la macro !


regarde du coté de la fonction hasarray
;o)))
Cette propriété a la valeur True si la cellule spécifiée fait partie
d'une formule matricielle.Type de données Variant en lecture seule.
Exemple
Cet exemple montre comment afficher un message si la cellule active
de la feuille Sheet1 fait partie d'une formule matricielle.
Worksheets("Sheet1").Activate
If ActiveCell.HasArray =True Then
MsgBox "The active cell is part of an array"
End If

@+





Avatar
GD
GD wrote:
dslam-v2 - Dslam non joignable
'ble59-1 boi59-1 can59-1 hel59-1 lib59-1 rsa59-1 tou59-1 tri59-1' - depuis :

02 h 53 min

'ascq-1 bleuets-1 bleuets-2 bleuets-3 bleuets-4 bleuets-5 bleuets-6
bleuets-7 bleuets-8 boitelle-1 boitelle-2 boitelle-3 canteleu-1 canteleu-2
canteleu-3 canteleu-4 faches-1 faches-2 haubourdin-1 haubourdin-2 hellemes-1
hellemes-2 hellemes-3 hellemes-4 liberte-1 liberte-2 liberte-3 pile-1 pile-2
pile-3 roncq-1 roncq-2 stantoine-1 stantoine-2 stmartin-1 tourcoing-1
triolo-1 triolo-2 wasquehal-1 wasquehal-2 wasquehal-3' - depuis : 02 h 47
min

allez bons rêves !!!

Avatar
jps
ne nous emm..... plus avec ton free, geedee : t'as qu'à aller chez wanamou,
comme tant de monde...
jps

"GD" a écrit dans le message de
news:
M'en parle pas Jean-paul !!!
ça n'arrete pas de déconner, 20 mn pour charger 80 messages !!!
-serveur free ne réponds pas attendre encore 60 secondes etc...

dslam-v2 - Dslam non joignable
'bdi68-1 ble59-1 boi59-1 can59-1 hel59-1 lib59-1 rsa59-1 stp25-2 tou59-1
tri59-1 weg38-1 ycl38-1' - depuis : 02 h 28 min

je me demande même comment j'arrive encore à surfer ???
@+


jps wrote:
fastoche une fois que tout le monde l'a claironné haut et fort....
si tu continues à copier, geedee, je t'envoie du côté de chez swan
isabelle (sachant qu'en inuit, swan signifie rainette)
jps

"GD" a écrit dans le message de
news:
Bonsour® "michel " ;o)))
denis wrote:
Je n'ai pas trouvé un moyen de pouvoir identifier les cellules ayant
une formule matricielle à partir du VBA. Si quelqu'un connaît le
moyen ... on pourra adapter la macro !


regarde du coté de la fonction hasarray
;o)))
Cette propriété a la valeur True si la cellule spécifiée fait partie
d'une formule matricielle.Type de données Variant en lecture seule.
Exemple
Cet exemple montre comment afficher un message si la cellule active
de la feuille Sheet1 fait partie d'une formule matricielle.
Worksheets("Sheet1").Activate
If ActiveCell.HasArray =True Then
MsgBox "The active cell is part of an array"
End If

@+









1 2