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 :-(
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
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 :-(
'-------------------------------- 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
Bartez
Salut MichDenis,
Je te remerci pour ton code, mais je n'arrive pas à le faire fonctionner pourtant pour le tester j'ai changé peu de chose, mais c'est peut être déjà trop ;-)
ç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 de ton aide et de tes lumières ! @+ Bartez
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
"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 MichDenis,
Je te remerci pour ton code, mais je n'arrive pas à le faire fonctionner
pourtant pour le tester j'ai changé peu de chose, mais c'est peut être déjà
trop ;-)
ç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 de ton aide et de tes lumières !
@+
Bartez
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
"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 :-(
Je te remerci pour ton code, mais je n'arrive pas à le faire fonctionner pourtant pour le tester j'ai changé peu de chose, mais c'est peut être déjà trop ;-)
ç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 de ton aide et de tes lumières ! @+ Bartez
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
"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 :-(