Bonjour à tous,
Je n'arrive pas à le faire fonctionner correctement le code suivant :
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Workbooks("Classeur1").Sheets("Feuil1") 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Workbooks("Classeur1").Sheets("Feuil2") 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
Ce code doit pourtant bien fonctionner car il m'a été proposé par
Michdenis
donc je pense qu'il doit être OK ;-) mais chez moi ça ne me copie qu'une
seule formule, et ça répette cette formule dans les
autres cellules qui doivent recevoir leur propre formule.
Autre chose, j'aimerais pouvoir copier directement toute les cellules
d'une
feuille et pas seulement de A1 à G10 j'ai donc tester avec A1: IV65535,
mais
il y a surement mieux à faire.
Merci pour votre aide !
@+
Bartez
"michdenis" a écrit dans le message de news:
%Bonjour Bartez,
'--------------------------------
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Feuil1 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Feuil2 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
'------------------------------------
Salutations!
"Bartez" a écrit dans le message de news:
ei$
Bonjour à tous,
Je recherche une façon de faire pour copier l'ensemble des formules d'une
feuille sur une autre (dans un même classeur) qui soit plus rapide que
mon
code ci-desous :
'dépose les formules aux emplacement prévus
With ActiveSheet
Set Rg >> Sheets(Dernier_Mois).UsedRange.SpecialCells(xlCellTypeFormulas)
For Each c In Rg
If c.HasArray = False Then
.Range(c.Address).FormulaLocal = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
Else
.Range(c.Address).FormulaArray = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
End If
'ce test est rajouté pour supprimer
'toutes les cellules contenant la formule =""
If .Range(c.Address).FormulaLocal = "=" & Chr$(34) &
Chr$(34) Then
.Range(c.Address).Clear
End If
Next
End With
Cette boucle fonctionne bien, mais est extrèmement lente étant donné que
j'ai beaucoup de formules à copier.
J'aimerais trouver quelque chose comme, sélectionner toutes les cellules
contenant une formule dans la feuille source, puis faire un simple copier
sur la feuille destination...Mais pour le moment tous mes essais ne
fonctionnent pas :-(
Merci de votre aide si vous avez une idée.
@+
Bartez
Bonjour à tous,
Je n'arrive pas à le faire fonctionner correctement le code suivant :
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Workbooks("Classeur1").Sheets("Feuil1") 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Workbooks("Classeur1").Sheets("Feuil2") 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
Ce code doit pourtant bien fonctionner car il m'a été proposé par
Michdenis
donc je pense qu'il doit être OK ;-) mais chez moi ça ne me copie qu'une
seule formule, et ça répette cette formule dans les
autres cellules qui doivent recevoir leur propre formule.
Autre chose, j'aimerais pouvoir copier directement toute les cellules
d'une
feuille et pas seulement de A1 à G10 j'ai donc tester avec A1: IV65535,
mais
il y a surement mieux à faire.
Merci pour votre aide !
@+
Bartez
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23JrsQf9XGHA.1228@TK2MSFTNGP02.phx.gbl...
Bonjour Bartez,
'--------------------------------
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Feuil1 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Feuil2 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
'------------------------------------
Salutations!
"Bartez" <Bartez@free.fr> a écrit dans le message de news:
ei$NLZ9XGHA.5004@TK2MSFTNGP02.phx.gbl...
Bonjour à tous,
Je recherche une façon de faire pour copier l'ensemble des formules d'une
feuille sur une autre (dans un même classeur) qui soit plus rapide que
mon
code ci-desous :
'dépose les formules aux emplacement prévus
With ActiveSheet
Set Rg >> Sheets(Dernier_Mois).UsedRange.SpecialCells(xlCellTypeFormulas)
For Each c In Rg
If c.HasArray = False Then
.Range(c.Address).FormulaLocal = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
Else
.Range(c.Address).FormulaArray = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
End If
'ce test est rajouté pour supprimer
'toutes les cellules contenant la formule =""
If .Range(c.Address).FormulaLocal = "=" & Chr$(34) &
Chr$(34) Then
.Range(c.Address).Clear
End If
Next
End With
Cette boucle fonctionne bien, mais est extrèmement lente étant donné que
j'ai beaucoup de formules à copier.
J'aimerais trouver quelque chose comme, sélectionner toutes les cellules
contenant une formule dans la feuille source, puis faire un simple copier
sur la feuille destination...Mais pour le moment tous mes essais ne
fonctionnent pas :-(
Merci de votre aide si vous avez une idée.
@+
Bartez
Bonjour à tous,
Je n'arrive pas à le faire fonctionner correctement le code suivant :
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Workbooks("Classeur1").Sheets("Feuil1") 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Workbooks("Classeur1").Sheets("Feuil2") 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
Ce code doit pourtant bien fonctionner car il m'a été proposé par
Michdenis
donc je pense qu'il doit être OK ;-) mais chez moi ça ne me copie qu'une
seule formule, et ça répette cette formule dans les
autres cellules qui doivent recevoir leur propre formule.
Autre chose, j'aimerais pouvoir copier directement toute les cellules
d'une
feuille et pas seulement de A1 à G10 j'ai donc tester avec A1: IV65535,
mais
il y a surement mieux à faire.
Merci pour votre aide !
@+
Bartez
"michdenis" a écrit dans le message de news:
%Bonjour Bartez,
'--------------------------------
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Feuil1 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Feuil2 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
'------------------------------------
Salutations!
"Bartez" a écrit dans le message de news:
ei$
Bonjour à tous,
Je recherche une façon de faire pour copier l'ensemble des formules d'une
feuille sur une autre (dans un même classeur) qui soit plus rapide que
mon
code ci-desous :
'dépose les formules aux emplacement prévus
With ActiveSheet
Set Rg >> Sheets(Dernier_Mois).UsedRange.SpecialCells(xlCellTypeFormulas)
For Each c In Rg
If c.HasArray = False Then
.Range(c.Address).FormulaLocal = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
Else
.Range(c.Address).FormulaArray = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
End If
'ce test est rajouté pour supprimer
'toutes les cellules contenant la formule =""
If .Range(c.Address).FormulaLocal = "=" & Chr$(34) &
Chr$(34) Then
.Range(c.Address).Clear
End If
Next
End With
Cette boucle fonctionne bien, mais est extrèmement lente étant donné que
j'ai beaucoup de formules à copier.
J'aimerais trouver quelque chose comme, sélectionner toutes les cellules
contenant une formule dans la feuille source, puis faire un simple copier
sur la feuille destination...Mais pour le moment tous mes essais ne
fonctionnent pas :-(
Merci de votre aide si vous avez une idée.
@+
Bartez
Bonjour "Bartez",
Effectivement , amha si c'est MichDenis qui a écrit cela,
cela doit faire précisément ce qu'il a compris de ta demande initiale.
A lire ton présent post et après avoir testé la macro j'en déduis que
peut-être tu veux plutôt
recopier depuis une sélection de cellules de Feuil1 Uniquement les
formules en même place de Feuil2
Donc je n'ai pas spécifié de plage particulière cela fonctionne sur
sélection d'une plage:
Sub SetFormulas()
Dim c As Range, myr As String
myr = Selection.Address
For Each c In Feuil1.Range(myr).Cells
If c.Formula Like "*=*" Then
Feuil2.Range(c.Address).Formula = Feuil1.Range(c.Address).Formula
End If
Next
End Sub
'lSteph
"Bartez" a écrit dans le message de news:Bonjour à tous,
Je n'arrive pas à le faire fonctionner correctement le code suivant :
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Workbooks("Classeur1").Sheets("Feuil1") 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Workbooks("Classeur1").Sheets("Feuil2") 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
Ce code doit pourtant bien fonctionner car il m'a été proposé par
Michdenis
donc je pense qu'il doit être OK ;-) mais chez moi ça ne me copie qu'une
seule formule, et ça répette cette formule dans les
autres cellules qui doivent recevoir leur propre formule.
Autre chose, j'aimerais pouvoir copier directement toute les cellules
d'une
feuille et pas seulement de A1 à G10 j'ai donc tester avec A1: IV65535,
mais
il y a surement mieux à faire.
Merci pour votre aide !
@+
Bartez
"michdenis" a écrit dans le message de news:
%Bonjour Bartez,
'--------------------------------
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Feuil1 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Feuil2 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
'------------------------------------
Salutations!
"Bartez" a écrit dans le message de news:
ei$
Bonjour à tous,
Je recherche une façon de faire pour copier l'ensemble des formules
d'une
feuille sur une autre (dans un même classeur) qui soit plus rapide que
mon
code ci-desous :
'dépose les formules aux emplacement prévus
With ActiveSheet
Set Rg >>> Sheets(Dernier_Mois).UsedRange.SpecialCells(xlCellTypeFormulas)
For Each c In Rg
If c.HasArray = False Then
.Range(c.Address).FormulaLocal = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
Else
.Range(c.Address).FormulaArray = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
End If
'ce test est rajouté pour supprimer
'toutes les cellules contenant la formule =""
If .Range(c.Address).FormulaLocal = "=" & Chr$(34) &
Chr$(34) Then
.Range(c.Address).Clear
End If
Next
End With
Cette boucle fonctionne bien, mais est extrèmement lente étant donné que
j'ai beaucoup de formules à copier.
J'aimerais trouver quelque chose comme, sélectionner toutes les cellules
contenant une formule dans la feuille source, puis faire un simple
copier
sur la feuille destination...Mais pour le moment tous mes essais ne
fonctionnent pas :-(
Merci de votre aide si vous avez une idée.
@+
Bartez
Bonjour "Bartez",
Effectivement , amha si c'est MichDenis qui a écrit cela,
cela doit faire précisément ce qu'il a compris de ta demande initiale.
A lire ton présent post et après avoir testé la macro j'en déduis que
peut-être tu veux plutôt
recopier depuis une sélection de cellules de Feuil1 Uniquement les
formules en même place de Feuil2
Donc je n'ai pas spécifié de plage particulière cela fonctionne sur
sélection d'une plage:
Sub SetFormulas()
Dim c As Range, myr As String
myr = Selection.Address
For Each c In Feuil1.Range(myr).Cells
If c.Formula Like "*=*" Then
Feuil2.Range(c.Address).Formula = Feuil1.Range(c.Address).Formula
End If
Next
End Sub
'lSteph
"Bartez" <Bartez@free.fr> a écrit dans le message de news:
efaK53DZGHA.5116@TK2MSFTNGP03.phx.gbl...
Bonjour à tous,
Je n'arrive pas à le faire fonctionner correctement le code suivant :
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Workbooks("Classeur1").Sheets("Feuil1") 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Workbooks("Classeur1").Sheets("Feuil2") 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
Ce code doit pourtant bien fonctionner car il m'a été proposé par
Michdenis
donc je pense qu'il doit être OK ;-) mais chez moi ça ne me copie qu'une
seule formule, et ça répette cette formule dans les
autres cellules qui doivent recevoir leur propre formule.
Autre chose, j'aimerais pouvoir copier directement toute les cellules
d'une
feuille et pas seulement de A1 à G10 j'ai donc tester avec A1: IV65535,
mais
il y a surement mieux à faire.
Merci pour votre aide !
@+
Bartez
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23JrsQf9XGHA.1228@TK2MSFTNGP02.phx.gbl...
Bonjour Bartez,
'--------------------------------
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Feuil1 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Feuil2 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
'------------------------------------
Salutations!
"Bartez" <Bartez@free.fr> a écrit dans le message de news:
ei$NLZ9XGHA.5004@TK2MSFTNGP02.phx.gbl...
Bonjour à tous,
Je recherche une façon de faire pour copier l'ensemble des formules
d'une
feuille sur une autre (dans un même classeur) qui soit plus rapide que
mon
code ci-desous :
'dépose les formules aux emplacement prévus
With ActiveSheet
Set Rg >>> Sheets(Dernier_Mois).UsedRange.SpecialCells(xlCellTypeFormulas)
For Each c In Rg
If c.HasArray = False Then
.Range(c.Address).FormulaLocal = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
Else
.Range(c.Address).FormulaArray = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
End If
'ce test est rajouté pour supprimer
'toutes les cellules contenant la formule =""
If .Range(c.Address).FormulaLocal = "=" & Chr$(34) &
Chr$(34) Then
.Range(c.Address).Clear
End If
Next
End With
Cette boucle fonctionne bien, mais est extrèmement lente étant donné que
j'ai beaucoup de formules à copier.
J'aimerais trouver quelque chose comme, sélectionner toutes les cellules
contenant une formule dans la feuille source, puis faire un simple
copier
sur la feuille destination...Mais pour le moment tous mes essais ne
fonctionnent pas :-(
Merci de votre aide si vous avez une idée.
@+
Bartez
Bonjour "Bartez",
Effectivement , amha si c'est MichDenis qui a écrit cela,
cela doit faire précisément ce qu'il a compris de ta demande initiale.
A lire ton présent post et après avoir testé la macro j'en déduis que
peut-être tu veux plutôt
recopier depuis une sélection de cellules de Feuil1 Uniquement les
formules en même place de Feuil2
Donc je n'ai pas spécifié de plage particulière cela fonctionne sur
sélection d'une plage:
Sub SetFormulas()
Dim c As Range, myr As String
myr = Selection.Address
For Each c In Feuil1.Range(myr).Cells
If c.Formula Like "*=*" Then
Feuil2.Range(c.Address).Formula = Feuil1.Range(c.Address).Formula
End If
Next
End Sub
'lSteph
"Bartez" a écrit dans le message de news:Bonjour à tous,
Je n'arrive pas à le faire fonctionner correctement le code suivant :
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Workbooks("Classeur1").Sheets("Feuil1") 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Workbooks("Classeur1").Sheets("Feuil2") 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
Ce code doit pourtant bien fonctionner car il m'a été proposé par
Michdenis
donc je pense qu'il doit être OK ;-) mais chez moi ça ne me copie qu'une
seule formule, et ça répette cette formule dans les
autres cellules qui doivent recevoir leur propre formule.
Autre chose, j'aimerais pouvoir copier directement toute les cellules
d'une
feuille et pas seulement de A1 à G10 j'ai donc tester avec A1: IV65535,
mais
il y a surement mieux à faire.
Merci pour votre aide !
@+
Bartez
"michdenis" a écrit dans le message de news:
%Bonjour Bartez,
'--------------------------------
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Feuil1 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Feuil2 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
'------------------------------------
Salutations!
"Bartez" a écrit dans le message de news:
ei$
Bonjour à tous,
Je recherche une façon de faire pour copier l'ensemble des formules
d'une
feuille sur une autre (dans un même classeur) qui soit plus rapide que
mon
code ci-desous :
'dépose les formules aux emplacement prévus
With ActiveSheet
Set Rg >>> Sheets(Dernier_Mois).UsedRange.SpecialCells(xlCellTypeFormulas)
For Each c In Rg
If c.HasArray = False Then
.Range(c.Address).FormulaLocal = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
Else
.Range(c.Address).FormulaArray = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
End If
'ce test est rajouté pour supprimer
'toutes les cellules contenant la formule =""
If .Range(c.Address).FormulaLocal = "=" & Chr$(34) &
Chr$(34) Then
.Range(c.Address).Clear
End If
Next
End With
Cette boucle fonctionne bien, mais est extrèmement lente étant donné que
j'ai beaucoup de formules à copier.
J'aimerais trouver quelque chose comme, sélectionner toutes les cellules
contenant une formule dans la feuille source, puis faire un simple
copier
sur la feuille destination...Mais pour le moment tous mes essais ne
fonctionnent pas :-(
Merci de votre aide si vous avez une idée.
@+
Bartez
Salut lSteph et merci de ton aide !
Je viens d'éxécuter ton code, et effectivement il copie bien toutes les
formules mais il oblige à passer par un test et une boucle pour chaque
cellule à copier comme je le faissais au paravant avec mon code perso.
En fait, j'ai plus de 520 formules à copier d'une feuille sur 70 autres
feuilles, ce qui est beaucoup trop long. C'est bien pour cela que je
recherche une astuce chose qui puisse me copier les formules d'un seul
bloc comme si je faisais un copier coller de l'intégralité de la feuille
mais en ne posant par la suite que les formules.
Un truc qui serait bien, c'est de faire copier (tout) et ensuite collage
spéciale (juste les formules), mais quand on fait ça avec les options,
Excel considère les valeurs simples comme des formules....domage :-(
Pourquoi je ne veut pas copier les valeurs simple : parce que les valeurs
existe déjà sur les feuilles destination. Cette macro me permettrait de
mettre à jour sur toutes les feuilles, les formules qui ont été modifiées
sur une feuille de test. Mais surtout sans avoir de perte de données sur
ces dernières.
Je sais pas si je suis bien clair ;-)
Peut être que c'est impossible de trouver une astuce pour faire ça et dans
ce cas tampis je conserverais mon code qui fait le boulot demandé mais qui
me bloque l'ordi pendant plus de 2 heures à chaque fois :-(
Merci de votre aide à tous !
Bartez
J'ai en effet
"lSteph" a écrit dans le message de news:Bonjour "Bartez",
Effectivement , amha si c'est MichDenis qui a écrit cela,
cela doit faire précisément ce qu'il a compris de ta demande initiale.
A lire ton présent post et après avoir testé la macro j'en déduis que
peut-être tu veux plutôt
recopier depuis une sélection de cellules de Feuil1 Uniquement les
formules en même place de Feuil2
Donc je n'ai pas spécifié de plage particulière cela fonctionne sur
sélection d'une plage:
Sub SetFormulas()
Dim c As Range, myr As String
myr = Selection.Address
For Each c In Feuil1.Range(myr).Cells
If c.Formula Like "*=*" Then
Feuil2.Range(c.Address).Formula = Feuil1.Range(c.Address).Formula
End If
Next
End Sub
'lSteph
"Bartez" a écrit dans le message de news:Bonjour à tous,
Je n'arrive pas à le faire fonctionner correctement le code suivant :
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Workbooks("Classeur1").Sheets("Feuil1") 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Workbooks("Classeur1").Sheets("Feuil2") 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
Ce code doit pourtant bien fonctionner car il m'a été proposé par
Michdenis
donc je pense qu'il doit être OK ;-) mais chez moi ça ne me copie qu'une
seule formule, et ça répette cette formule dans les
autres cellules qui doivent recevoir leur propre formule.
Autre chose, j'aimerais pouvoir copier directement toute les cellules
d'une
feuille et pas seulement de A1 à G10 j'ai donc tester avec A1: IV65535,
mais
il y a surement mieux à faire.
Merci pour votre aide !
@+
Bartez
"michdenis" a écrit dans le message de news:
%Bonjour Bartez,
'--------------------------------
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Feuil1 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Feuil2 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
'------------------------------------
Salutations!
"Bartez" a écrit dans le message de news:
ei$
Bonjour à tous,
Je recherche une façon de faire pour copier l'ensemble des formules
d'une
feuille sur une autre (dans un même classeur) qui soit plus rapide que
mon
code ci-desous :
'dépose les formules aux emplacement prévus
With ActiveSheet
Set Rg >>>> Sheets(Dernier_Mois).UsedRange.SpecialCells(xlCellTypeFormulas)
For Each c In Rg
If c.HasArray = False Then
.Range(c.Address).FormulaLocal = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
Else
.Range(c.Address).FormulaArray = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
End If
'ce test est rajouté pour supprimer
'toutes les cellules contenant la formule =""
If .Range(c.Address).FormulaLocal = "=" & Chr$(34) &
Chr$(34) Then
.Range(c.Address).Clear
End If
Next
End With
Cette boucle fonctionne bien, mais est extrèmement lente étant donné
que
j'ai beaucoup de formules à copier.
J'aimerais trouver quelque chose comme, sélectionner toutes les
cellules
contenant une formule dans la feuille source, puis faire un simple
copier
sur la feuille destination...Mais pour le moment tous mes essais ne
fonctionnent pas :-(
Merci de votre aide si vous avez une idée.
@+
Bartez
Salut lSteph et merci de ton aide !
Je viens d'éxécuter ton code, et effectivement il copie bien toutes les
formules mais il oblige à passer par un test et une boucle pour chaque
cellule à copier comme je le faissais au paravant avec mon code perso.
En fait, j'ai plus de 520 formules à copier d'une feuille sur 70 autres
feuilles, ce qui est beaucoup trop long. C'est bien pour cela que je
recherche une astuce chose qui puisse me copier les formules d'un seul
bloc comme si je faisais un copier coller de l'intégralité de la feuille
mais en ne posant par la suite que les formules.
Un truc qui serait bien, c'est de faire copier (tout) et ensuite collage
spéciale (juste les formules), mais quand on fait ça avec les options,
Excel considère les valeurs simples comme des formules....domage :-(
Pourquoi je ne veut pas copier les valeurs simple : parce que les valeurs
existe déjà sur les feuilles destination. Cette macro me permettrait de
mettre à jour sur toutes les feuilles, les formules qui ont été modifiées
sur une feuille de test. Mais surtout sans avoir de perte de données sur
ces dernières.
Je sais pas si je suis bien clair ;-)
Peut être que c'est impossible de trouver une astuce pour faire ça et dans
ce cas tampis je conserverais mon code qui fait le boulot demandé mais qui
me bloque l'ordi pendant plus de 2 heures à chaque fois :-(
Merci de votre aide à tous !
Bartez
J'ai en effet
"lSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
OqdHuJEZGHA.3684@TK2MSFTNGP05.phx.gbl...
Bonjour "Bartez",
Effectivement , amha si c'est MichDenis qui a écrit cela,
cela doit faire précisément ce qu'il a compris de ta demande initiale.
A lire ton présent post et après avoir testé la macro j'en déduis que
peut-être tu veux plutôt
recopier depuis une sélection de cellules de Feuil1 Uniquement les
formules en même place de Feuil2
Donc je n'ai pas spécifié de plage particulière cela fonctionne sur
sélection d'une plage:
Sub SetFormulas()
Dim c As Range, myr As String
myr = Selection.Address
For Each c In Feuil1.Range(myr).Cells
If c.Formula Like "*=*" Then
Feuil2.Range(c.Address).Formula = Feuil1.Range(c.Address).Formula
End If
Next
End Sub
'lSteph
"Bartez" <Bartez@free.fr> a écrit dans le message de news:
efaK53DZGHA.5116@TK2MSFTNGP03.phx.gbl...
Bonjour à tous,
Je n'arrive pas à le faire fonctionner correctement le code suivant :
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Workbooks("Classeur1").Sheets("Feuil1") 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Workbooks("Classeur1").Sheets("Feuil2") 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
Ce code doit pourtant bien fonctionner car il m'a été proposé par
Michdenis
donc je pense qu'il doit être OK ;-) mais chez moi ça ne me copie qu'une
seule formule, et ça répette cette formule dans les
autres cellules qui doivent recevoir leur propre formule.
Autre chose, j'aimerais pouvoir copier directement toute les cellules
d'une
feuille et pas seulement de A1 à G10 j'ai donc tester avec A1: IV65535,
mais
il y a surement mieux à faire.
Merci pour votre aide !
@+
Bartez
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23JrsQf9XGHA.1228@TK2MSFTNGP02.phx.gbl...
Bonjour Bartez,
'--------------------------------
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Feuil1 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Feuil2 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
'------------------------------------
Salutations!
"Bartez" <Bartez@free.fr> a écrit dans le message de news:
ei$NLZ9XGHA.5004@TK2MSFTNGP02.phx.gbl...
Bonjour à tous,
Je recherche une façon de faire pour copier l'ensemble des formules
d'une
feuille sur une autre (dans un même classeur) qui soit plus rapide que
mon
code ci-desous :
'dépose les formules aux emplacement prévus
With ActiveSheet
Set Rg >>>> Sheets(Dernier_Mois).UsedRange.SpecialCells(xlCellTypeFormulas)
For Each c In Rg
If c.HasArray = False Then
.Range(c.Address).FormulaLocal = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
Else
.Range(c.Address).FormulaArray = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
End If
'ce test est rajouté pour supprimer
'toutes les cellules contenant la formule =""
If .Range(c.Address).FormulaLocal = "=" & Chr$(34) &
Chr$(34) Then
.Range(c.Address).Clear
End If
Next
End With
Cette boucle fonctionne bien, mais est extrèmement lente étant donné
que
j'ai beaucoup de formules à copier.
J'aimerais trouver quelque chose comme, sélectionner toutes les
cellules
contenant une formule dans la feuille source, puis faire un simple
copier
sur la feuille destination...Mais pour le moment tous mes essais ne
fonctionnent pas :-(
Merci de votre aide si vous avez une idée.
@+
Bartez
Salut lSteph et merci de ton aide !
Je viens d'éxécuter ton code, et effectivement il copie bien toutes les
formules mais il oblige à passer par un test et une boucle pour chaque
cellule à copier comme je le faissais au paravant avec mon code perso.
En fait, j'ai plus de 520 formules à copier d'une feuille sur 70 autres
feuilles, ce qui est beaucoup trop long. C'est bien pour cela que je
recherche une astuce chose qui puisse me copier les formules d'un seul
bloc comme si je faisais un copier coller de l'intégralité de la feuille
mais en ne posant par la suite que les formules.
Un truc qui serait bien, c'est de faire copier (tout) et ensuite collage
spéciale (juste les formules), mais quand on fait ça avec les options,
Excel considère les valeurs simples comme des formules....domage :-(
Pourquoi je ne veut pas copier les valeurs simple : parce que les valeurs
existe déjà sur les feuilles destination. Cette macro me permettrait de
mettre à jour sur toutes les feuilles, les formules qui ont été modifiées
sur une feuille de test. Mais surtout sans avoir de perte de données sur
ces dernières.
Je sais pas si je suis bien clair ;-)
Peut être que c'est impossible de trouver une astuce pour faire ça et dans
ce cas tampis je conserverais mon code qui fait le boulot demandé mais qui
me bloque l'ordi pendant plus de 2 heures à chaque fois :-(
Merci de votre aide à tous !
Bartez
J'ai en effet
"lSteph" a écrit dans le message de news:Bonjour "Bartez",
Effectivement , amha si c'est MichDenis qui a écrit cela,
cela doit faire précisément ce qu'il a compris de ta demande initiale.
A lire ton présent post et après avoir testé la macro j'en déduis que
peut-être tu veux plutôt
recopier depuis une sélection de cellules de Feuil1 Uniquement les
formules en même place de Feuil2
Donc je n'ai pas spécifié de plage particulière cela fonctionne sur
sélection d'une plage:
Sub SetFormulas()
Dim c As Range, myr As String
myr = Selection.Address
For Each c In Feuil1.Range(myr).Cells
If c.Formula Like "*=*" Then
Feuil2.Range(c.Address).Formula = Feuil1.Range(c.Address).Formula
End If
Next
End Sub
'lSteph
"Bartez" a écrit dans le message de news:Bonjour à tous,
Je n'arrive pas à le faire fonctionner correctement le code suivant :
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Workbooks("Classeur1").Sheets("Feuil1") 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Workbooks("Classeur1").Sheets("Feuil2") 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
Ce code doit pourtant bien fonctionner car il m'a été proposé par
Michdenis
donc je pense qu'il doit être OK ;-) mais chez moi ça ne me copie qu'une
seule formule, et ça répette cette formule dans les
autres cellules qui doivent recevoir leur propre formule.
Autre chose, j'aimerais pouvoir copier directement toute les cellules
d'une
feuille et pas seulement de A1 à G10 j'ai donc tester avec A1: IV65535,
mais
il y a surement mieux à faire.
Merci pour votre aide !
@+
Bartez
"michdenis" a écrit dans le message de news:
%Bonjour Bartez,
'--------------------------------
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Feuil1 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Feuil2 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
'------------------------------------
Salutations!
"Bartez" a écrit dans le message de news:
ei$
Bonjour à tous,
Je recherche une façon de faire pour copier l'ensemble des formules
d'une
feuille sur une autre (dans un même classeur) qui soit plus rapide que
mon
code ci-desous :
'dépose les formules aux emplacement prévus
With ActiveSheet
Set Rg >>>> Sheets(Dernier_Mois).UsedRange.SpecialCells(xlCellTypeFormulas)
For Each c In Rg
If c.HasArray = False Then
.Range(c.Address).FormulaLocal = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
Else
.Range(c.Address).FormulaArray = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
End If
'ce test est rajouté pour supprimer
'toutes les cellules contenant la formule =""
If .Range(c.Address).FormulaLocal = "=" & Chr$(34) &
Chr$(34) Then
.Range(c.Address).Clear
End If
Next
End With
Cette boucle fonctionne bien, mais est extrèmement lente étant donné
que
j'ai beaucoup de formules à copier.
J'aimerais trouver quelque chose comme, sélectionner toutes les
cellules
contenant une formule dans la feuille source, puis faire un simple
copier
sur la feuille destination...Mais pour le moment tous mes essais ne
fonctionnent pas :-(
Merci de votre aide si vous avez une idée.
@+
Bartez
Bonjour Bartez
ceci fait gagner en rapidité, surtout pour des formules à copier, si tu ne
l'as pas deja fait
Application.Calculation = xlManual
'ta macro
Application.Calculation = xlAutomatic
Youky
"Bartez" a écrit dans le message de news:Salut lSteph et merci de ton aide !
Je viens d'éxécuter ton code, et effectivement il copie bien toutes les
formules mais il oblige à passer par un test et une boucle pour chaque
cellule à copier comme je le faissais au paravant avec mon code perso.
En fait, j'ai plus de 520 formules à copier d'une feuille sur 70 autres
feuilles, ce qui est beaucoup trop long. C'est bien pour cela que je
recherche une astuce chose qui puisse me copier les formules d'un seul
bloc comme si je faisais un copier coller de l'intégralité de la feuille
mais en ne posant par la suite que les formules.
Un truc qui serait bien, c'est de faire copier (tout) et ensuite collage
spéciale (juste les formules), mais quand on fait ça avec les options,
Excel considère les valeurs simples comme des formules....domage :-(
Pourquoi je ne veut pas copier les valeurs simple : parce que les valeurs
existe déjà sur les feuilles destination. Cette macro me permettrait de
mettre à jour sur toutes les feuilles, les formules qui ont été modifiées
sur une feuille de test. Mais surtout sans avoir de perte de données sur
ces dernières.
Je sais pas si je suis bien clair ;-)
Peut être que c'est impossible de trouver une astuce pour faire ça et
dans ce cas tampis je conserverais mon code qui fait le boulot demandé
mais qui me bloque l'ordi pendant plus de 2 heures à chaque fois :-(
Merci de votre aide à tous !
Bartez
J'ai en effet
"lSteph" a écrit dans le message de news:Bonjour "Bartez",
Effectivement , amha si c'est MichDenis qui a écrit cela,
cela doit faire précisément ce qu'il a compris de ta demande initiale.
A lire ton présent post et après avoir testé la macro j'en déduis que
peut-être tu veux plutôt
recopier depuis une sélection de cellules de Feuil1 Uniquement les
formules en même place de Feuil2
Donc je n'ai pas spécifié de plage particulière cela fonctionne sur
sélection d'une plage:
Sub SetFormulas()
Dim c As Range, myr As String
myr = Selection.Address
For Each c In Feuil1.Range(myr).Cells
If c.Formula Like "*=*" Then
Feuil2.Range(c.Address).Formula = Feuil1.Range(c.Address).Formula
End If
Next
End Sub
'lSteph
"Bartez" a écrit dans le message de news:Bonjour à tous,
Je n'arrive pas à le faire fonctionner correctement le code suivant :
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Workbooks("Classeur1").Sheets("Feuil1") 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Workbooks("Classeur1").Sheets("Feuil2") 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
Ce code doit pourtant bien fonctionner car il m'a été proposé par
Michdenis
donc je pense qu'il doit être OK ;-) mais chez moi ça ne me copie
qu'une
seule formule, et ça répette cette formule dans les
autres cellules qui doivent recevoir leur propre formule.
Autre chose, j'aimerais pouvoir copier directement toute les cellules
d'une
feuille et pas seulement de A1 à G10 j'ai donc tester avec A1: IV65535,
mais
il y a surement mieux à faire.
Merci pour votre aide !
@+
Bartez
"michdenis" a écrit dans le message de news:
%Bonjour Bartez,
'--------------------------------
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Feuil1 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Feuil2 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
'------------------------------------
Salutations!
"Bartez" a écrit dans le message de news:
ei$
Bonjour à tous,
Je recherche une façon de faire pour copier l'ensemble des formules
d'une
feuille sur une autre (dans un même classeur) qui soit plus rapide que
mon
code ci-desous :
'dépose les formules aux emplacement prévus
With ActiveSheet
Set Rg >>>>> Sheets(Dernier_Mois).UsedRange.SpecialCells(xlCellTypeFormulas)
For Each c In Rg
If c.HasArray = False Then
.Range(c.Address).FormulaLocal = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
Else
.Range(c.Address).FormulaArray = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
End If
'ce test est rajouté pour supprimer
'toutes les cellules contenant la formule =""
If .Range(c.Address).FormulaLocal = "=" & Chr$(34) &
Chr$(34) Then
.Range(c.Address).Clear
End If
Next
End With
Cette boucle fonctionne bien, mais est extrèmement lente étant donné
que
j'ai beaucoup de formules à copier.
J'aimerais trouver quelque chose comme, sélectionner toutes les
cellules
contenant une formule dans la feuille source, puis faire un simple
copier
sur la feuille destination...Mais pour le moment tous mes essais ne
fonctionnent pas :-(
Merci de votre aide si vous avez une idée.
@+
Bartez
Bonjour Bartez
ceci fait gagner en rapidité, surtout pour des formules à copier, si tu ne
l'as pas deja fait
Application.Calculation = xlManual
'ta macro
Application.Calculation = xlAutomatic
Youky
"Bartez" <Bartez@free.fr> a écrit dans le message de news:
upu3uuEZGHA.1888@TK2MSFTNGP02.phx.gbl...
Salut lSteph et merci de ton aide !
Je viens d'éxécuter ton code, et effectivement il copie bien toutes les
formules mais il oblige à passer par un test et une boucle pour chaque
cellule à copier comme je le faissais au paravant avec mon code perso.
En fait, j'ai plus de 520 formules à copier d'une feuille sur 70 autres
feuilles, ce qui est beaucoup trop long. C'est bien pour cela que je
recherche une astuce chose qui puisse me copier les formules d'un seul
bloc comme si je faisais un copier coller de l'intégralité de la feuille
mais en ne posant par la suite que les formules.
Un truc qui serait bien, c'est de faire copier (tout) et ensuite collage
spéciale (juste les formules), mais quand on fait ça avec les options,
Excel considère les valeurs simples comme des formules....domage :-(
Pourquoi je ne veut pas copier les valeurs simple : parce que les valeurs
existe déjà sur les feuilles destination. Cette macro me permettrait de
mettre à jour sur toutes les feuilles, les formules qui ont été modifiées
sur une feuille de test. Mais surtout sans avoir de perte de données sur
ces dernières.
Je sais pas si je suis bien clair ;-)
Peut être que c'est impossible de trouver une astuce pour faire ça et
dans ce cas tampis je conserverais mon code qui fait le boulot demandé
mais qui me bloque l'ordi pendant plus de 2 heures à chaque fois :-(
Merci de votre aide à tous !
Bartez
J'ai en effet
"lSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
OqdHuJEZGHA.3684@TK2MSFTNGP05.phx.gbl...
Bonjour "Bartez",
Effectivement , amha si c'est MichDenis qui a écrit cela,
cela doit faire précisément ce qu'il a compris de ta demande initiale.
A lire ton présent post et après avoir testé la macro j'en déduis que
peut-être tu veux plutôt
recopier depuis une sélection de cellules de Feuil1 Uniquement les
formules en même place de Feuil2
Donc je n'ai pas spécifié de plage particulière cela fonctionne sur
sélection d'une plage:
Sub SetFormulas()
Dim c As Range, myr As String
myr = Selection.Address
For Each c In Feuil1.Range(myr).Cells
If c.Formula Like "*=*" Then
Feuil2.Range(c.Address).Formula = Feuil1.Range(c.Address).Formula
End If
Next
End Sub
'lSteph
"Bartez" <Bartez@free.fr> a écrit dans le message de news:
efaK53DZGHA.5116@TK2MSFTNGP03.phx.gbl...
Bonjour à tous,
Je n'arrive pas à le faire fonctionner correctement le code suivant :
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Workbooks("Classeur1").Sheets("Feuil1") 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Workbooks("Classeur1").Sheets("Feuil2") 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
Ce code doit pourtant bien fonctionner car il m'a été proposé par
Michdenis
donc je pense qu'il doit être OK ;-) mais chez moi ça ne me copie
qu'une
seule formule, et ça répette cette formule dans les
autres cellules qui doivent recevoir leur propre formule.
Autre chose, j'aimerais pouvoir copier directement toute les cellules
d'une
feuille et pas seulement de A1 à G10 j'ai donc tester avec A1: IV65535,
mais
il y a surement mieux à faire.
Merci pour votre aide !
@+
Bartez
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23JrsQf9XGHA.1228@TK2MSFTNGP02.phx.gbl...
Bonjour Bartez,
'--------------------------------
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Feuil1 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Feuil2 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
'------------------------------------
Salutations!
"Bartez" <Bartez@free.fr> a écrit dans le message de news:
ei$NLZ9XGHA.5004@TK2MSFTNGP02.phx.gbl...
Bonjour à tous,
Je recherche une façon de faire pour copier l'ensemble des formules
d'une
feuille sur une autre (dans un même classeur) qui soit plus rapide que
mon
code ci-desous :
'dépose les formules aux emplacement prévus
With ActiveSheet
Set Rg >>>>> Sheets(Dernier_Mois).UsedRange.SpecialCells(xlCellTypeFormulas)
For Each c In Rg
If c.HasArray = False Then
.Range(c.Address).FormulaLocal = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
Else
.Range(c.Address).FormulaArray = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
End If
'ce test est rajouté pour supprimer
'toutes les cellules contenant la formule =""
If .Range(c.Address).FormulaLocal = "=" & Chr$(34) &
Chr$(34) Then
.Range(c.Address).Clear
End If
Next
End With
Cette boucle fonctionne bien, mais est extrèmement lente étant donné
que
j'ai beaucoup de formules à copier.
J'aimerais trouver quelque chose comme, sélectionner toutes les
cellules
contenant une formule dans la feuille source, puis faire un simple
copier
sur la feuille destination...Mais pour le moment tous mes essais ne
fonctionnent pas :-(
Merci de votre aide si vous avez une idée.
@+
Bartez
Bonjour Bartez
ceci fait gagner en rapidité, surtout pour des formules à copier, si tu ne
l'as pas deja fait
Application.Calculation = xlManual
'ta macro
Application.Calculation = xlAutomatic
Youky
"Bartez" a écrit dans le message de news:Salut lSteph et merci de ton aide !
Je viens d'éxécuter ton code, et effectivement il copie bien toutes les
formules mais il oblige à passer par un test et une boucle pour chaque
cellule à copier comme je le faissais au paravant avec mon code perso.
En fait, j'ai plus de 520 formules à copier d'une feuille sur 70 autres
feuilles, ce qui est beaucoup trop long. C'est bien pour cela que je
recherche une astuce chose qui puisse me copier les formules d'un seul
bloc comme si je faisais un copier coller de l'intégralité de la feuille
mais en ne posant par la suite que les formules.
Un truc qui serait bien, c'est de faire copier (tout) et ensuite collage
spéciale (juste les formules), mais quand on fait ça avec les options,
Excel considère les valeurs simples comme des formules....domage :-(
Pourquoi je ne veut pas copier les valeurs simple : parce que les valeurs
existe déjà sur les feuilles destination. Cette macro me permettrait de
mettre à jour sur toutes les feuilles, les formules qui ont été modifiées
sur une feuille de test. Mais surtout sans avoir de perte de données sur
ces dernières.
Je sais pas si je suis bien clair ;-)
Peut être que c'est impossible de trouver une astuce pour faire ça et
dans ce cas tampis je conserverais mon code qui fait le boulot demandé
mais qui me bloque l'ordi pendant plus de 2 heures à chaque fois :-(
Merci de votre aide à tous !
Bartez
J'ai en effet
"lSteph" a écrit dans le message de news:Bonjour "Bartez",
Effectivement , amha si c'est MichDenis qui a écrit cela,
cela doit faire précisément ce qu'il a compris de ta demande initiale.
A lire ton présent post et après avoir testé la macro j'en déduis que
peut-être tu veux plutôt
recopier depuis une sélection de cellules de Feuil1 Uniquement les
formules en même place de Feuil2
Donc je n'ai pas spécifié de plage particulière cela fonctionne sur
sélection d'une plage:
Sub SetFormulas()
Dim c As Range, myr As String
myr = Selection.Address
For Each c In Feuil1.Range(myr).Cells
If c.Formula Like "*=*" Then
Feuil2.Range(c.Address).Formula = Feuil1.Range(c.Address).Formula
End If
Next
End Sub
'lSteph
"Bartez" a écrit dans le message de news:Bonjour à tous,
Je n'arrive pas à le faire fonctionner correctement le code suivant :
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Workbooks("Classeur1").Sheets("Feuil1") 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Workbooks("Classeur1").Sheets("Feuil2") 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
Ce code doit pourtant bien fonctionner car il m'a été proposé par
Michdenis
donc je pense qu'il doit être OK ;-) mais chez moi ça ne me copie
qu'une
seule formule, et ça répette cette formule dans les
autres cellules qui doivent recevoir leur propre formule.
Autre chose, j'aimerais pouvoir copier directement toute les cellules
d'une
feuille et pas seulement de A1 à G10 j'ai donc tester avec A1: IV65535,
mais
il y a surement mieux à faire.
Merci pour votre aide !
@+
Bartez
"michdenis" a écrit dans le message de news:
%Bonjour Bartez,
'--------------------------------
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Feuil1 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Feuil2 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
'------------------------------------
Salutations!
"Bartez" a écrit dans le message de news:
ei$
Bonjour à tous,
Je recherche une façon de faire pour copier l'ensemble des formules
d'une
feuille sur une autre (dans un même classeur) qui soit plus rapide que
mon
code ci-desous :
'dépose les formules aux emplacement prévus
With ActiveSheet
Set Rg >>>>> Sheets(Dernier_Mois).UsedRange.SpecialCells(xlCellTypeFormulas)
For Each c In Rg
If c.HasArray = False Then
.Range(c.Address).FormulaLocal = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
Else
.Range(c.Address).FormulaArray = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
End If
'ce test est rajouté pour supprimer
'toutes les cellules contenant la formule =""
If .Range(c.Address).FormulaLocal = "=" & Chr$(34) &
Chr$(34) Then
.Range(c.Address).Clear
End If
Next
End With
Cette boucle fonctionne bien, mais est extrèmement lente étant donné
que
j'ai beaucoup de formules à copier.
J'aimerais trouver quelque chose comme, sélectionner toutes les
cellules
contenant une formule dans la feuille source, puis faire un simple
copier
sur la feuille destination...Mais pour le moment tous mes essais ne
fonctionnent pas :-(
Merci de votre aide si vous avez une idée.
@+
Bartez
Bonjour Bartez,
'--------------------------------
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Feuil1 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Feuil2 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
'------------------------------------
Salutations!
"Bartez" a écrit dans le message de news:
ei$
Bonjour à tous,
Je recherche une façon de faire pour copier l'ensemble des formules d'une
feuille sur une autre (dans un même classeur) qui soit plus rapide que mon
code ci-desous :
'dépose les formules aux emplacement prévus
With ActiveSheet
Set Rg > Sheets(Dernier_Mois).UsedRange.SpecialCells(xlCellTypeFormulas)
For Each c In Rg
If c.HasArray = False Then
.Range(c.Address).FormulaLocal = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
Else
.Range(c.Address).FormulaArray = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
End If
'ce test est rajouté pour supprimer
'toutes les cellules contenant la formule =""
If .Range(c.Address).FormulaLocal = "=" & Chr$(34) &
Chr$(34) Then
.Range(c.Address).Clear
End If
Next
End With
Cette boucle fonctionne bien, mais est extrèmement lente étant donné que
j'ai beaucoup de formules à copier.
J'aimerais trouver quelque chose comme, sélectionner toutes les cellules
contenant une formule dans la feuille source, puis faire un simple copier
sur la feuille destination...Mais pour le moment tous mes essais ne
fonctionnent pas :-(
Merci de votre aide si vous avez une idée.
@+
Bartez
Bonjour Bartez,
'--------------------------------
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Feuil1 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Feuil2 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
'------------------------------------
Salutations!
"Bartez" <Bartez@free.fr> a écrit dans le message de news:
ei$NLZ9XGHA.5004@TK2MSFTNGP02.phx.gbl...
Bonjour à tous,
Je recherche une façon de faire pour copier l'ensemble des formules d'une
feuille sur une autre (dans un même classeur) qui soit plus rapide que mon
code ci-desous :
'dépose les formules aux emplacement prévus
With ActiveSheet
Set Rg > Sheets(Dernier_Mois).UsedRange.SpecialCells(xlCellTypeFormulas)
For Each c In Rg
If c.HasArray = False Then
.Range(c.Address).FormulaLocal = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
Else
.Range(c.Address).FormulaArray = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
End If
'ce test est rajouté pour supprimer
'toutes les cellules contenant la formule =""
If .Range(c.Address).FormulaLocal = "=" & Chr$(34) &
Chr$(34) Then
.Range(c.Address).Clear
End If
Next
End With
Cette boucle fonctionne bien, mais est extrèmement lente étant donné que
j'ai beaucoup de formules à copier.
J'aimerais trouver quelque chose comme, sélectionner toutes les cellules
contenant une formule dans la feuille source, puis faire un simple copier
sur la feuille destination...Mais pour le moment tous mes essais ne
fonctionnent pas :-(
Merci de votre aide si vous avez une idée.
@+
Bartez
Bonjour Bartez,
'--------------------------------
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Feuil1 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Feuil2 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
'------------------------------------
Salutations!
"Bartez" a écrit dans le message de news:
ei$
Bonjour à tous,
Je recherche une façon de faire pour copier l'ensemble des formules d'une
feuille sur une autre (dans un même classeur) qui soit plus rapide que mon
code ci-desous :
'dépose les formules aux emplacement prévus
With ActiveSheet
Set Rg > Sheets(Dernier_Mois).UsedRange.SpecialCells(xlCellTypeFormulas)
For Each c In Rg
If c.HasArray = False Then
.Range(c.Address).FormulaLocal = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
Else
.Range(c.Address).FormulaArray = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
End If
'ce test est rajouté pour supprimer
'toutes les cellules contenant la formule =""
If .Range(c.Address).FormulaLocal = "=" & Chr$(34) &
Chr$(34) Then
.Range(c.Address).Clear
End If
Next
End With
Cette boucle fonctionne bien, mais est extrèmement lente étant donné que
j'ai beaucoup de formules à copier.
J'aimerais trouver quelque chose comme, sélectionner toutes les cellules
contenant une formule dans la feuille source, puis faire un simple copier
sur la feuille destination...Mais pour le moment tous mes essais ne
fonctionnent pas :-(
Merci de votre aide si vous avez une idée.
@+
Bartez
'------------------------------
Sub test()
With Feuil1
Set Rg = .UsedRange
With Feuil2
.Range(Rg.Address) = Rg.Formula
.Range(Rg.Address).SpecialCells(xlCellTypeConstants).Clear
End With
End With
End Sub
'------------------------------
OU
'------------------------------
Sub CopierFormule()
Dim Rg As Range, Are As Range
Dim Tblo As Variant
On Error Resume Next
With Sheets("Feuil1") 'Source
Set Rg = .UsedRange.SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
For Each Are In Rg.Areas
'Destination
With Sheets("Feuil2").Range(Are.Address)
.Formula = Are.Formula
End With
Next
End With
End Sub
'------------------------------
"Bartez" a écrit dans le message de news:
Bonjour à tous,
Je n'arrive pas à le faire fonctionner correctement le code suivant :
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Workbooks("Classeur1").Sheets("Feuil1") 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Workbooks("Classeur1").Sheets("Feuil2") 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
Ce code doit pourtant bien fonctionner car il m'a été proposé par
Michdenis
donc je pense qu'il doit être OK ;-) mais chez moi ça ne me copie qu'une
seule formule, et ça répette cette formule dans les
autres cellules qui doivent recevoir leur propre formule.
Autre chose, j'aimerais pouvoir copier directement toute les cellules
d'une
feuille et pas seulement de A1 à G10 j'ai donc tester avec A1: IV65535,
mais
il y a surement mieux à faire.
Merci pour votre aide !
@+
Bartez
"michdenis" a écrit dans le message de news:
%Bonjour Bartez,
'--------------------------------
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Feuil1 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Feuil2 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
'------------------------------------
Salutations!
"Bartez" a écrit dans le message de news:
ei$
Bonjour à tous,
Je recherche une façon de faire pour copier l'ensemble des formules d'une
feuille sur une autre (dans un même classeur) qui soit plus rapide que
mon
code ci-desous :
'dépose les formules aux emplacement prévus
With ActiveSheet
Set Rg >> Sheets(Dernier_Mois).UsedRange.SpecialCells(xlCellTypeFormulas)
For Each c In Rg
If c.HasArray = False Then
.Range(c.Address).FormulaLocal = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
Else
.Range(c.Address).FormulaArray = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
End If
'ce test est rajouté pour supprimer
'toutes les cellules contenant la formule =""
If .Range(c.Address).FormulaLocal = "=" & Chr$(34) &
Chr$(34) Then
.Range(c.Address).Clear
End If
Next
End With
Cette boucle fonctionne bien, mais est extrèmement lente étant donné que
j'ai beaucoup de formules à copier.
J'aimerais trouver quelque chose comme, sélectionner toutes les cellules
contenant une formule dans la feuille source, puis faire un simple copier
sur la feuille destination...Mais pour le moment tous mes essais ne
fonctionnent pas :-(
Merci de votre aide si vous avez une idée.
@+
Bartez
'------------------------------
Sub test()
With Feuil1
Set Rg = .UsedRange
With Feuil2
.Range(Rg.Address) = Rg.Formula
.Range(Rg.Address).SpecialCells(xlCellTypeConstants).Clear
End With
End With
End Sub
'------------------------------
OU
'------------------------------
Sub CopierFormule()
Dim Rg As Range, Are As Range
Dim Tblo As Variant
On Error Resume Next
With Sheets("Feuil1") 'Source
Set Rg = .UsedRange.SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
For Each Are In Rg.Areas
'Destination
With Sheets("Feuil2").Range(Are.Address)
.Formula = Are.Formula
End With
Next
End With
End Sub
'------------------------------
"Bartez" <Bartez@free.fr> a écrit dans le message de news:
efaK53DZGHA.5116@TK2MSFTNGP03.phx.gbl...
Bonjour à tous,
Je n'arrive pas à le faire fonctionner correctement le code suivant :
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Workbooks("Classeur1").Sheets("Feuil1") 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Workbooks("Classeur1").Sheets("Feuil2") 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
Ce code doit pourtant bien fonctionner car il m'a été proposé par
Michdenis
donc je pense qu'il doit être OK ;-) mais chez moi ça ne me copie qu'une
seule formule, et ça répette cette formule dans les
autres cellules qui doivent recevoir leur propre formule.
Autre chose, j'aimerais pouvoir copier directement toute les cellules
d'une
feuille et pas seulement de A1 à G10 j'ai donc tester avec A1: IV65535,
mais
il y a surement mieux à faire.
Merci pour votre aide !
@+
Bartez
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23JrsQf9XGHA.1228@TK2MSFTNGP02.phx.gbl...
Bonjour Bartez,
'--------------------------------
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Feuil1 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Feuil2 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
'------------------------------------
Salutations!
"Bartez" <Bartez@free.fr> a écrit dans le message de news:
ei$NLZ9XGHA.5004@TK2MSFTNGP02.phx.gbl...
Bonjour à tous,
Je recherche une façon de faire pour copier l'ensemble des formules d'une
feuille sur une autre (dans un même classeur) qui soit plus rapide que
mon
code ci-desous :
'dépose les formules aux emplacement prévus
With ActiveSheet
Set Rg >> Sheets(Dernier_Mois).UsedRange.SpecialCells(xlCellTypeFormulas)
For Each c In Rg
If c.HasArray = False Then
.Range(c.Address).FormulaLocal = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
Else
.Range(c.Address).FormulaArray = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
End If
'ce test est rajouté pour supprimer
'toutes les cellules contenant la formule =""
If .Range(c.Address).FormulaLocal = "=" & Chr$(34) &
Chr$(34) Then
.Range(c.Address).Clear
End If
Next
End With
Cette boucle fonctionne bien, mais est extrèmement lente étant donné que
j'ai beaucoup de formules à copier.
J'aimerais trouver quelque chose comme, sélectionner toutes les cellules
contenant une formule dans la feuille source, puis faire un simple copier
sur la feuille destination...Mais pour le moment tous mes essais ne
fonctionnent pas :-(
Merci de votre aide si vous avez une idée.
@+
Bartez
'------------------------------
Sub test()
With Feuil1
Set Rg = .UsedRange
With Feuil2
.Range(Rg.Address) = Rg.Formula
.Range(Rg.Address).SpecialCells(xlCellTypeConstants).Clear
End With
End With
End Sub
'------------------------------
OU
'------------------------------
Sub CopierFormule()
Dim Rg As Range, Are As Range
Dim Tblo As Variant
On Error Resume Next
With Sheets("Feuil1") 'Source
Set Rg = .UsedRange.SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
For Each Are In Rg.Areas
'Destination
With Sheets("Feuil2").Range(Are.Address)
.Formula = Are.Formula
End With
Next
End With
End Sub
'------------------------------
"Bartez" a écrit dans le message de news:
Bonjour à tous,
Je n'arrive pas à le faire fonctionner correctement le code suivant :
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Workbooks("Classeur1").Sheets("Feuil1") 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Workbooks("Classeur1").Sheets("Feuil2") 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
Ce code doit pourtant bien fonctionner car il m'a été proposé par
Michdenis
donc je pense qu'il doit être OK ;-) mais chez moi ça ne me copie qu'une
seule formule, et ça répette cette formule dans les
autres cellules qui doivent recevoir leur propre formule.
Autre chose, j'aimerais pouvoir copier directement toute les cellules
d'une
feuille et pas seulement de A1 à G10 j'ai donc tester avec A1: IV65535,
mais
il y a surement mieux à faire.
Merci pour votre aide !
@+
Bartez
"michdenis" a écrit dans le message de news:
%Bonjour Bartez,
'--------------------------------
Sub CopierFormule()
Dim Rg As Range
Dim Tblo As Variant
On Error Resume Next
With Feuil1 'Source
Set Rg = .Range("A1:G10").SpecialCells(xlCellTypeFormulas)
If Err <> 0 Then Err = 0: Exit Sub
Tblo = Rg.Formula
End With
With Feuil2 'Destination
.Range(Rg.Address) = Tblo
End With
End Sub
'------------------------------------
Salutations!
"Bartez" a écrit dans le message de news:
ei$
Bonjour à tous,
Je recherche une façon de faire pour copier l'ensemble des formules d'une
feuille sur une autre (dans un même classeur) qui soit plus rapide que
mon
code ci-desous :
'dépose les formules aux emplacement prévus
With ActiveSheet
Set Rg >> Sheets(Dernier_Mois).UsedRange.SpecialCells(xlCellTypeFormulas)
For Each c In Rg
If c.HasArray = False Then
.Range(c.Address).FormulaLocal = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
Else
.Range(c.Address).FormulaArray = _
Worksheets(Dernier_Mois).Range(c.Address).FormulaLocal
End If
'ce test est rajouté pour supprimer
'toutes les cellules contenant la formule =""
If .Range(c.Address).FormulaLocal = "=" & Chr$(34) &
Chr$(34) Then
.Range(c.Address).Clear
End If
Next
End With
Cette boucle fonctionne bien, mais est extrèmement lente étant donné que
j'ai beaucoup de formules à copier.
J'aimerais trouver quelque chose comme, sélectionner toutes les cellules
contenant une formule dans la feuille source, puis faire un simple copier
sur la feuille destination...Mais pour le moment tous mes essais ne
fonctionnent pas :-(
Merci de votre aide si vous avez une idée.
@+
Bartez