Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

DélimiterPlageCelluleDansMacro

  • Initiateur de la discussion Initiateur de la discussion Moa
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

Moa

Guest
Salut !

Voilà, j'ai une macro qui ne s'applique qu'à une plage de cellule.

En fait pour faire ça, j'ai appliqué la formule suivante :

If ActiveCell.Interior.ColorIndex = 36 Then

bla bla bla...................

Mais mon problème est que j'ai d'autres cellules avec cette couleur, dans ma feuille, donc je doit limiter ma macro, à cette plage de cellule d'une autre manière.

J'ai cherché du côté de : For each cells...mais je n'y arrive pas.

Si qqn a une idée, gros merci d'avance.

@ +

Moa
 
Merci beaucoup Binouze, mais je n'arrive pas à faire fonctionner ce que tu m'as donné.

J'ai essayé en changeant plein de paramètres, pas moyen.

Merci beaucoup quand-même

@ +

Moa
 
Bonsoir le forum

Essaye ceci Moa

Option Explicit
Sub essai()
Dim cellule As Range
For Each cellule In Range("B1😀13")
If cellule.Interior.ColorIndex = 36 Then
'bla bla bla...
cellule.Interior.ColorIndex = 6
End If
Next cellule
End Sub

 
Bonjour forum

Moa, essaye cela


Sub couleur()
Dim Cell As Range
Dim MaPlage As Range

Set MaPlage = Range("A1:A10")

For Each Cell In MaPlage
If Cell.Interior.ColorIndex = 3 Then
Cell.Offset(0, 1).Interior.ColorIndex = 8
End If
Next Cell
End Sub


@Christophe@
 
ça revient à la même chose que ma 2nde solution
mais je pense que si ça ne convient pas à moa, il devrait poster un fichier test montrant ce qu'il veut faire
 
Salut les gars :

Je n'arrive pas à adapter vos macros. (Faut savoir que Vba et moi...héhé !! on est pas très copain....hihihi...)

Donc je vous donne ma macro d'origine :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
On Error Resume Next

If ActiveCell.Interior.ColorIndex = 36 Then

If ActiveCell.Value = "" Then
ActiveCell.Value = "L"

ElseIf ActiveCell.Value = "L" Then
ActiveCell.Value = "P"

ElseIf ActiveCell.Value = "P" Then
ActiveCell.Value = "S"
ElseIf ActiveCell.Value = "S" Then
ActiveCell.Value = ""
End If


'End If

Cancel = True

End Sub
For Each cellule In Range("FR2:FT14")
Next cellule
 
Non Non et non Pu.... de Cla...j'ai pas fini :

Voici la vraie macro d'origine


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
On Error Resume Next

If ActiveCell.Interior.ColorIndex = 36 Then

If ActiveCell.Value = "" Then
ActiveCell.Value = "L"

ElseIf ActiveCell.Value = "L" Then
ActiveCell.Value = "P"

ElseIf ActiveCell.Value = "P" Then
ActiveCell.Value = "S"

ElseIf ActiveCell.Value = "S" Then
ActiveCell.Value = ""
End If

End If

Cancel = True

End Sub

Donc en fait le subterfuge utilisé est le "interior.ColorIndex..blabla"

Mais en réalité je ne veux plus parler de couleur dans ma macro, je voudrais parler directement de plage :

Aussi j'ai éssayé en remplaçant par :

For Each cellule In Range("FR2:FT14")
Next cellule

Et la ça marche, mais trop bien puisque c'est opérationnel sur tout la feuille.

En fait il faut qu'en double cliquant, sur les cellules de mon tableau, ma macro fonctionne, mais que pour ce tableau, car cette feuille et déjà pleine d'autre tableaux, formules et macros.

Ma macro actuelle fonctionne très bien, mais j'ai d'autres tableaux avec la même couleur, donc je ne peux plus utiliser cette formule.

Voilà j'espère avoir été assez clair et encore merci beaucoup les gars.

@ +

Moa
 
bonjour

et celà ?

if Not Intersect(Target, range("tontableau")) Is Nothing then
if ActiveCell.Interior.ColorIndex=36 then
select case target.value
case "" :val="L"
case "L":val="P"
case "P":val="S"
case "S":val=""
case else
end select
target.value=val
end if
end if
cancel=true
 
Re-Salut !

Donc, Binouze ta dernière solution ne fonctionne pas non plus, mais par contre, j'ai piqué seulement :

If Not Intersect(Target, Range("FR2:FT14")) Is Nothing Then

Que j'ai rajouté au début de la macro, j'ai supprimé la partie "ColorIndex" et là, ça marche très bien.

Donc, voici la macro finale :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
On Error Resume Next

If Not Intersect(Target, Range("FR2:FT14")) Is Nothing Then

If ActiveCell.Value = "" Then
ActiveCell.Value = "L"
ElseIf ActiveCell.Value = "X" Then
ActiveCell.Value = "L"
ElseIf ActiveCell.Value = "L" Then
ActiveCell.Value = "P"
ElseIf ActiveCell.Value = "P" Then
ActiveCell.Value = "S"
ElseIf ActiveCell.Value = "S" Then
ActiveCell.Value = ""
End If

Cancel = True
End If
End Sub

Encore plein de gros merci à vous les gars.

Bonne fin de journée.

@ +

Moa
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
188
Réponses
5
Affichages
316
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
773
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…