cs_dede94
Messages postés5Date d'inscriptionmardi 26 août 2008StatutMembreDernière intervention26 août 2008
-
26 août 2008 à 13:55
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 2013
-
26 août 2008 à 16:22
Bonjour,
je souhaite écrire une macro qui fige les valeurs (remplace les formules par leur valeur actuelle) de toutes les cellules de tous les onglets de mon fichier excel, sauf ceux que je liste.
J'ai écrise ceci :
Sub essaiBis()
Dim F As Worksheet
For Each F In ThisWorkbook.Worksheets
If F.Name <> "a" And F.Name <> "b" Then
With F
Cells.Select
Selection.Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Application.CutCopyMode = False
Range("A2").Select
End With
End If
Next F
La macro fonctionne sur l'onglet actif, mais ne passe pas aux onglets suivant.
Pouvez vous m'aider ?
Merci
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 26 août 2008 à 14:13
Salut,
Il est inutile de poster deux fois la même question (surtout dans un laps de temps aussi court...)
NOTE: dans ton Code le With F ne sert strictement à rien sauf si tu fais comme suit: essaie ce code peu etre règlera t il ton problème.
Sub essaiBis()
Dim F As Worksheet
For Each F In ThisWorkbook.Worksheets
If F.Name <> "a" And F.Name <> "b" Then
With F
.Cells.Select
Selection.Copy
.Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
.Range("A1").Select
Application.CutCopyMode = False
.Range("A2").Select
End With
End If
Next F
End Sub<hr />, ----
[code.aspx?ID=41455 By Renfield]
Sinon essaie d'ajouter avant ton traitement F.activate
@+: Ju£i€n Pensez: Réponse acceptée
cs_dede94
Messages postés5Date d'inscriptionmardi 26 août 2008StatutMembreDernière intervention26 août 2008 26 août 2008 à 14:32
merci. En fait dans mon deuxième message, j'avais enlevé les commentaires, mis pendant mes essais personnels..
Cette fois, j'ai un message d'erreur disant "400"...J'ai pensé que ça pouvait etre une limitation dun nombre de calculs, j'ai mis 500 iterations, mais ne change rien. Une idée ?
Merci
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 26 août 2008 à 16:22
Salut,
en fait, cela fonctionne en faisant F.activate avant le IF. Merci!
oui mais une reponse accepter sur une mauvaise methode je suis pas sur que cela nous aide !
le F.activate qui est a proscrir car activate et autre select ne sont generalement pas recommandé. Il sont source d'erreur et de lenteur.
Le code donné par jrivet qui exploite le with est bien meilleur et est en fait la seul reponse acceptable ici
et pour aller au bout du raisonnement voici un code qui fait la meme chose (c'est a dire rien vu que tu copies les cellules de chaque feuille pour les coller au meme endroit) sans select et sans activate :
Dim F As Worksheet
For Each F In ThisWorkbook.Worksheets
If F.Name <> "a" And F.Name <> "b" Then
With F
. Cells.Copy
F.Paste .
Range("A1") 'attrention il y a un espace entre F.Paste et .
Range
End With
End If
Next F
End Sub