Activate obligatoire sinon code ne fonctionne pas

loulou14

XLDnaute Nouveau
Bonjour

J'essaie d'optimiser mes codes et donc j'entreprends de retirer les .Activate qui imposent des changements "d'écran".

Je bute sur un .Activate que je ne peux pas retirer, sinon "Erreur d'éxécution 1004".

A priori c'est cette ligne qui est en cause :
Code:
Set Plage = Sheets("NATALITE MFI").Range(Range("C6"), Range("C6").End(xlToRight))


Un expert du forum peut-il m'apporter une explication ? Et pourquoi pas une astuce pour contourner cette contrainte ?

D'avance Merci
Code:
Sub NataliteMFI()
' Calcul la natalité MFI
Dim i As Long, DerniereLigne As Long
Dim NbCol As Long
Dim j As Long
Dim c As Range
'---
ThisWorkbook.Activate
Sheets("NATALITE MFI").Activate
Sheets("NATALITE MFI").Outline.ShowLevels RowLevels:=2
Cells.Select
      With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
NbCol = [A6].CurrentRegion.Columns.Count
DerniereLigne = Sheets("NATALITE MFI").Range("B65536").End(xlUp).Row
     For i = 7 To DerniereLigne
       For j& = 2 To NbCol
         Set c = Sheets("NATALITE MFI").Cells(i, j)
         If c <> "" Then
           c.Interior.ColorIndex = 6
           Exit For
         End If
       Next j
     Next i
Sheets("NATALITE MFI").Outline.ShowLevels RowLevels:=1

Set Plage = Sheets("NATALITE MFI").Range(Range("C6"), Range("C6").End(xlToRight))
    For Each c In Plage
        If c.Value <> "" Then
            c.Offset(2493, 0).Value = c.Offset(2496, 0).Value & "-" & c.Value
            c.Offset(2494, -1).Copy
            c.Offset(2494, 0).PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        End If
    Next

End Sub
 

Lone-wolf

XLDnaute Barbatruc
Bonjour loulou :)

D'après le code tu est toujours sur la même feuille; donc tu met

With Sheets("NATALITE MFI")
Set Plage = .Range("C6").End(xlToRight)
End With

Oubien déclaré la variable Dim Ws As Worksheet

Set Ws = Sheets("NATALITE MFI")

With Ws
Set Plage = .Range("C6").End(xlToRight)
End With
 

chris

XLDnaute Barbatruc
Bonjour

Il faudrait
Code:
Set Plage = Sheets("NATALITE MFI").Range(Sheets("NATALITE MFI").Range("C6"), Sheets("NATALITE MFI").Range("C6").End(xlToRight))
ou bien un With Sheets("NATALITE MFI")

pour que CHAQUE range se réfère à la bonne feuille

Edit : Coucou Lone Wolf, plus rapide
 

Discussions similaires

Statistiques des forums

Discussions
312 176
Messages
2 085 962
Membres
103 066
dernier inscrit
bobfils