Macro excel: activer feuille ou fichier pour coller ?
Résolu
conrade82
Messages postés
105
Statut
Membre
-
Patrice33740 Messages postés 8930 Statut Membre -
Patrice33740 Messages postés 8930 Statut Membre -
Bonjour,
J'ai un petit souci. Depuis que je m'intéresse aux macros Excel, je construis mes codes sans utiliser "select" ou "selection", ce qui épure le code et effectivement optimise les temsp de traitement. Mais j'ai un souci: je travaille sur un code qui copie et coller d'un fichier A vers un fichier B des celles voire des colonnes. Pour ne pas utiliser "select" ou "selection", pour copier une cellule j'écris: workbooks("mon fichier A").sheet("feuille1").range("A1:A10").copie et je fais la même chose pour coller dans le fichier B. A ce niveau tout va bien.
Cette action doit être reproduite sur plusieurs onglets. J'utilise donc une boucle. Quand la boucle doit copier les données de la feuille2 du fichier A dans la feuille2 du fichier B, j'ai un bug: "Run-time error '1004': Application-defined or objet-defined error".
ça me le fait également pour un fichier pour lequel je mets à jour le format onglet après onglet via une boucle. Quand la boucle passe au fichier suivant, il y a un bug. Voici un code:
Par contre si au début de la macro je fais en sorte d'activer l'onglet, le bug ne se produit plus. Je trouve ça dommage de devoir activer ma feuille pour que ma macro fonctionne. Y a-t-il un moyen pour corriger ?
Merci d'avance de votre aide.
Cordialement,
Conrade82
J'ai un petit souci. Depuis que je m'intéresse aux macros Excel, je construis mes codes sans utiliser "select" ou "selection", ce qui épure le code et effectivement optimise les temsp de traitement. Mais j'ai un souci: je travaille sur un code qui copie et coller d'un fichier A vers un fichier B des celles voire des colonnes. Pour ne pas utiliser "select" ou "selection", pour copier une cellule j'écris: workbooks("mon fichier A").sheet("feuille1").range("A1:A10").copie et je fais la même chose pour coller dans le fichier B. A ce niveau tout va bien.
Cette action doit être reproduite sur plusieurs onglets. J'utilise donc une boucle. Quand la boucle doit copier les données de la feuille2 du fichier A dans la feuille2 du fichier B, j'ai un bug: "Run-time error '1004': Application-defined or objet-defined error".
ça me le fait également pour un fichier pour lequel je mets à jour le format onglet après onglet via une boucle. Quand la boucle passe au fichier suivant, il y a un bug. Voici un code:
Sub MiseEnFormeConditionnelle()
'Macro créée par le 31/05/2014
Dim lastli As Integer, lastco As Integer
For i = 1 To Worksheets.Count
lastli = Sheets(i).Cells(4, 3).End(xlDown).Row
lastco = Sheets(i).Cells(4, 3).End(xlToRight).Column
With Sheets(i)
'.Activate
With .Range("C4:C" & lastli)
With .FormatConditions
.Delete
.Add Type:=xlCellValue, Operator:=xlLessEqual, Formula1:="0"
End With
With .FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 10
End With
End With
With .Range("D4:D" & lastli)
With .FormatConditions
.Delete
.Add Type:=xlCellValue, Operator:=xlBetween, Formula1:="0,795", Formula2:="0,89999999"
End With
With .FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 5
End With
.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreaterEqual, Formula1:="0,9"
With .FormatConditions(2).Font
.Bold = True
.Italic = False
.ColorIndex = 3
End With
.FormatConditions.Add Type:=xlCellValue, Operator:=xlLessEqual, Formula1:="0"
With .FormatConditions(3).Font
.Bold = True
.Italic = False
.ColorIndex = 10
End With
End With
.Range(Cells(4, 3), Cells(lastli, 4)).Copy 'la macro bug ici quand la valeur "i" passe à 2.
.Range(Cells(4, 5), Cells(lastli, lastco)).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End With
Next i
End Sub
Par contre si au début de la macro je fais en sorte d'activer l'onglet, le bug ne se produit plus. Je trouve ça dommage de devoir activer ma feuille pour que ma macro fonctionne. Y a-t-il un moyen pour corriger ?
Merci d'avance de votre aide.
Cordialement,
Conrade82
A voir également:
- Macro excel: activer feuille ou fichier pour coller ?
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
2 réponses
Bonjour,
je construis mes codes sans utiliser "select" ou "selection"
C'est la meilleure méthode, malheureusement pas toujours possible !
Pour ton bug, tu as simplement oublié de préciser de quelles Cells il s'agit !
Essaies :
--
Cordialement
Patrice
je construis mes codes sans utiliser "select" ou "selection"
C'est la meilleure méthode, malheureusement pas toujours possible !
Pour ton bug, tu as simplement oublié de préciser de quelles Cells il s'agit !
Essaies :
.Range(.Cells(4, 3), .Cells(lastli, 4)).Copy .Range(.Cells(4, 5), .Cells(lastli, lastco)).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
--
Cordialement
Patrice