XL 2010 Selection d'une zone définie et non la derniére ligne non vide

Myst

XLDnaute Occasionnel
Bonjour le forum
Mon fichier fonctionne assez bien et j'aurais juste besoin de modifier la sélection de la zone a traiter
Actuellement la zone est identifié par
LastLigne = Range("D" & Rows.Count).End(xlUp).Row
LastColonne = Range("E2").End(xlToRight).Column
et je voudrais définir cette zone par les cellules E3 a P23 o_O
merci
 

Pièces jointes

  • V1.xlsm
    125.7 KB · Affichages: 36

Myst

XLDnaute Occasionnel
Bonjour Staple 1600
J'ai modifié en conséquence mais le code ne fonctionne plus

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'LastLigne = Range("D" & Rows.Count).End(xlUp).Row
'LastColonne = Range("E2").End(xlToRight).Column


'selection de la zone a traiter
Dim Zone As Range
Set Zone = Range("E3:p23")

'mise à jour de la couleur de police selon la colonne D
For i = 3 To LastLigne
CouleurPolice = Range("D" & i).Font.ColorIndex
Range("E" & i).Resize(1, LastColonne - 4).Interior.ColorIndex = CouleurPolice
Next i

'mise à jour de la couleur de cellule (gris) selon le contenu de la ligne 2
For j = 5 To LastColonne
If Cells(2, j).Font.ColorIndex = xlAutomatic Then
Cells(3, j).Resize(LastLigne - 2, 1).Interior.ColorIndex = 16 'gris
End If

'mise à jour en rouge des cellules vides et police "blanc" en ligne 2
If Cells(2, j).Font.ColorIndex = 2 Then 'couleur blanc
For k = 3 To LastLigne
If Cells(k, j) = "" Then Cells(k, j).Interior.ColorIndex = 3 'couleur Rouge
Next k
End If
Next j
Calculate
End Sub
 

Yurperqod

XLDnaute Occasionnel
Bonjour le forum

J'ai testé trois façons de faire et les trois identifient la plage que tu indiques E3:p23
La macro est installée dans un module standard.
VB:
Sub MacroTest()
Dim LastLigne As Long
Dim LastColonne As Long
Dim Zone As Range
LastLigne = Range("D" & Rows.Count).End(xlUp).Row
LastColonne = Range("E2").End(xlToRight).Column
'première façon
MsgBox Sheets("36").Range(Cells(3, "E"), Cells(LastLigne, LastColonne)).Address
'seconde façon
MsgBox Sheets("36").Range("E3:P23").Address
'troisième façon
Set Zone = Sheets("36").Range("E3:P23")
MsgBox Zone.Address
End Sub
Tu peux expliquer exactement ce que tu veux faire, stp ?

La colonne E est la colonne 5 donc le code de ton precédent message devrait être
Set Zone=Sheets("36").Range(Cells(3, 5), Cells(LastLigne, LastColonne))
 

Yurperqod

XLDnaute Occasionnel
Si ta plage est toujours figée à E3:p23 , tu peux écrire ta macro comme cà:
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
LastLigne = 23
LastColonne = 16
'mise à jour de la couleur de police selon la colonne D
For i = 3 To LastLigne
     CouleurPolice = Range("D" & i).Font.ColorIndex
     Range("E" & i).Resize(1, LastColonne - 4).Interior.ColorIndex = CouleurPolice
Next i
'mise à jour de la couleur de cellule (gris) selon le contenu de la ligne 2
For j = 5 To LastColonne
     If Cells(2, j).Font.ColorIndex = xlAutomatic Then
         Cells(3, j).Resize(LastLigne - 2, 1).Interior.ColorIndex = 16 'gris
     End If
     'mise à jour en rouge des cellules vides  et police "blanc" en ligne 2
     If Cells(2, j).Font.ColorIndex = 2 Then 'couleur blanc
         For k = 3 To LastLigne
             If Cells(k, j) = "" Then Cells(k, j).Interior.ColorIndex = 3 'couleur Rouge
         Next k
     End If
Next j
    Calculate
End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 017
Messages
2 104 581
Membres
109 082
dernier inscrit
Narlock