Macro pour cellules non contigues
Résolu/Fermé
A voir également:
- Macro pour cellules non contigues
- Formule excel pour additionner plusieurs cellules - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Verrouiller cellules excel - Guide
- Macro logiciel - Télécharger - Organisation
12 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 750
17 sept. 2009 à 18:37
17 sept. 2009 à 18:37
Bonsoir,
Dim i As Integer, derlig As Integer
derlig = ActiveSheet.Range("A65536").End(xlUp).Row
For i = 1 To derlig
If IsEmpty(Cells(i, 1)) Then 'si la cellule est vide alors je ne fais rien
Else 'sinon (si elle est "pleine")
Cells(i, 1).Select 'je la sélectionne
With Selection.Interior 'et je la peins en rouge
.ColorIndex = 3 'ici le code couleur
End With
End If
Next i
Dim i As Integer, derlig As Integer
derlig = ActiveSheet.Range("A65536").End(xlUp).Row
For i = 1 To derlig
If IsEmpty(Cells(i, 1)) Then 'si la cellule est vide alors je ne fais rien
Else 'sinon (si elle est "pleine")
Cells(i, 1).Select 'je la sélectionne
With Selection.Interior 'et je la peins en rouge
.ColorIndex = 3 'ici le code couleur
End With
End If
Next i
merci d'abord pour la réactivité.
mais quelques petites précisions :
j'ai 5 cellules concernées
A5,A7,A9,A11,A12 seulement.
par ailleurs j'ai créer une cellule (A4) avec un menu déroulant qui (j'aimerais bien) me permettrais de remplir les dites cellules d'une couleur de mon choix.
le menu me permet de choisir rouge, violet, bleu ciel, vert etc....
en cliquant sur le menu (et donc en sélectionnant une couleur), je voudrais que les 5 cellules du haut se remplissent. Donc la couleur pourrait changer selon mes besoins.
pouvez-vous me guider sur la macro correspondante.
merci d'avance
mais quelques petites précisions :
j'ai 5 cellules concernées
A5,A7,A9,A11,A12 seulement.
par ailleurs j'ai créer une cellule (A4) avec un menu déroulant qui (j'aimerais bien) me permettrais de remplir les dites cellules d'une couleur de mon choix.
le menu me permet de choisir rouge, violet, bleu ciel, vert etc....
en cliquant sur le menu (et donc en sélectionnant une couleur), je voudrais que les 5 cellules du haut se remplissent. Donc la couleur pourrait changer selon mes besoins.
pouvez-vous me guider sur la macro correspondante.
merci d'avance
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 750
18 sept. 2009 à 10:13
18 sept. 2009 à 10:13
Salut,
Commençons par la devise de Mike-31 sur ce forum : "Un problème sans solution est un problème mal posé (Einstein)"...
Ensuite, plusieurs étapes :
1- Créer la liste déroulante :
Dans la feuille Excel ou tu veux ta liste déroulante, créé d'abord les champs (par exemple en colonne F) avec dans la cellule voisine le numéro VBA correspondant à la couleur (en colonne G)
F_________G
Noir_______1
Rouge_____3
Orange____46
Vert_______50
Bleu_______33
Violet______13
Gris________2
Ensuite tu cliques sur A4, Données/validation
Autoriser choisir "liste" et source : =$F$1:$F$7 (par exemple)
OK voilà ta liste est créée.
2- Insérer le code au bon endroit pour que lorsque ta feuille change la couleur change dans les cellules concernées :
Clic droit sur l'onglet de la feuille et choisir "visualiser le code", Visual Basic s'ouvre.
copier coller ce code dans cette fenêtre :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim var As String
var = ActiveSheet.Columns(6).Cells.Find(Range("A4")).Offset(0, 1)
Set plage = ActiveSheet.Range("A5,A7,A9,A11:A12")
With plage.Interior
.ColorIndex = var
End With
Set plage = Nothing
End Sub
Explications :
Dim var As String : déclaration d'une variable nommée "var" comme étant une chaîne de caractère
var = ActiveSheet.Columns(6).Cells.Find(Range("A4")).Offset(0, 1) attribution d'une valeur à cette variable. Ici la valeur qu'on lui donne c'est : ActiveSheet [page active] Columns(6) [colonne F] .Cells.Find(Range("A4")) [recherche de la cellule ayant le même contenu que "A4"] .Offset(0, 1) [on prends la valeur contenue dans la cellule voisine, colonne de droite]
Set plage = ActiveSheet.Range("A5,A7,A9,A11:A12") définit la plage de cellules qui changera de couleurs
With plage.Interior
.ColorIndex = var attribue à la plage la couleur recherchée (var)
End With
Si tu souhaites plus d'explications n'hésite pas. En VBA le principal n'est pas le code lui même mais la démarche.
Commençons par la devise de Mike-31 sur ce forum : "Un problème sans solution est un problème mal posé (Einstein)"...
Ensuite, plusieurs étapes :
1- Créer la liste déroulante :
Dans la feuille Excel ou tu veux ta liste déroulante, créé d'abord les champs (par exemple en colonne F) avec dans la cellule voisine le numéro VBA correspondant à la couleur (en colonne G)
F_________G
Noir_______1
Rouge_____3
Orange____46
Vert_______50
Bleu_______33
Violet______13
Gris________2
Ensuite tu cliques sur A4, Données/validation
Autoriser choisir "liste" et source : =$F$1:$F$7 (par exemple)
OK voilà ta liste est créée.
2- Insérer le code au bon endroit pour que lorsque ta feuille change la couleur change dans les cellules concernées :
Clic droit sur l'onglet de la feuille et choisir "visualiser le code", Visual Basic s'ouvre.
copier coller ce code dans cette fenêtre :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim var As String
var = ActiveSheet.Columns(6).Cells.Find(Range("A4")).Offset(0, 1)
Set plage = ActiveSheet.Range("A5,A7,A9,A11:A12")
With plage.Interior
.ColorIndex = var
End With
Set plage = Nothing
End Sub
Explications :
Dim var As String : déclaration d'une variable nommée "var" comme étant une chaîne de caractère
var = ActiveSheet.Columns(6).Cells.Find(Range("A4")).Offset(0, 1) attribution d'une valeur à cette variable. Ici la valeur qu'on lui donne c'est : ActiveSheet [page active] Columns(6) [colonne F] .Cells.Find(Range("A4")) [recherche de la cellule ayant le même contenu que "A4"] .Offset(0, 1) [on prends la valeur contenue dans la cellule voisine, colonne de droite]
Set plage = ActiveSheet.Range("A5,A7,A9,A11:A12") définit la plage de cellules qui changera de couleurs
With plage.Interior
.ColorIndex = var attribue à la plage la couleur recherchée (var)
End With
Si tu souhaites plus d'explications n'hésite pas. En VBA le principal n'est pas le code lui même mais la démarche.
OK merci je vais essayer et je te tiens au courant très bientôt.
encore merci pour cette aide précieuse
A+
encore merci pour cette aide précieuse
A+
ibll1
Messages postés
8
Date d'inscription
dimanche 20 septembre 2009
Statut
Membre
Dernière intervention
21 septembre 2009
20 sept. 2009 à 20:04
20 sept. 2009 à 20:04
coucou je reviens avec des nouvlles.
en fait en écrivant ton code (et j'ai fait très attention) il semble qu'il y ait une erreur 13 = incompatibilité de type au niveau du code
le .colorindex=var il ne le prend pas.
voilà ce que j'ai écris :
Private Sub worksheet_selectionchange(ByVal target As Range)
Dim var As String
var = ActiveSheet.Columns(42).Cells.Find(Range("F4")).Offset(0.1)
Set plage = ActiveSheet.Range("A9,A11,A13,A15,A17")
With plage.Interior
.ColorIndex = var
End With
Set plage = Nothing
End Sub
si tu peux m'aider encore j'apprécierais beaucoup, merci d'avance
en fait en écrivant ton code (et j'ai fait très attention) il semble qu'il y ait une erreur 13 = incompatibilité de type au niveau du code
le .colorindex=var il ne le prend pas.
voilà ce que j'ai écris :
Private Sub worksheet_selectionchange(ByVal target As Range)
Dim var As String
var = ActiveSheet.Columns(42).Cells.Find(Range("F4")).Offset(0.1)
Set plage = ActiveSheet.Range("A9,A11,A13,A15,A17")
With plage.Interior
.ColorIndex = var
End With
Set plage = Nothing
End Sub
si tu peux m'aider encore j'apprécierais beaucoup, merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 750
21 sept. 2009 à 08:32
21 sept. 2009 à 08:32
Salut,
L'erreur est ici :
var = ActiveSheet.Columns(42).Cells.Find(Range("F4")).Offset(0.1)
à remplacer par var = ActiveSheet.Columns(42).Cells.Find(Range("F4")).Offset(0, 1)
C'est une virgule, pas un point.
L'erreur est ici :
var = ActiveSheet.Columns(42).Cells.Find(Range("F4")).Offset(0.1)
à remplacer par var = ActiveSheet.Columns(42).Cells.Find(Range("F4")).Offset(0, 1)
C'est une virgule, pas un point.
ibll1
Messages postés
8
Date d'inscription
dimanche 20 septembre 2009
Statut
Membre
Dernière intervention
21 septembre 2009
21 sept. 2009 à 14:35
21 sept. 2009 à 14:35
sic! j' avais pas mis les lunettes :)
j'essaye et je te tiens au courant.
encore merci pour l'aide
j'essaye et je te tiens au courant.
encore merci pour l'aide
ibll1
Messages postés
8
Date d'inscription
dimanche 20 septembre 2009
Statut
Membre
Dernière intervention
21 septembre 2009
21 sept. 2009 à 14:57
21 sept. 2009 à 14:57
ça marche !
je pensais qu'en sélectionnant juste la couleur dans le menu, les cellules se coloreraient............mais en fait il faut valider dans une cellule vide.
ce n'est pas possible ?
je pensais qu'en sélectionnant juste la couleur dans le menu, les cellules se coloreraient............mais en fait il faut valider dans une cellule vide.
ce n'est pas possible ?
ibll1
Messages postés
8
Date d'inscription
dimanche 20 septembre 2009
Statut
Membre
Dernière intervention
21 septembre 2009
21 sept. 2009 à 18:22
21 sept. 2009 à 18:22
Help ! nouveau problème
dans ma page j'ai une cellule qui change de couleur à l'aide du menu crée par la validation des données.
tout va bien.......
sauf que je voudrais mettre une 2nd cellule qui fonctionne de la même manière et ainsi pouvoir avoir par exemple dans l'une la couleur vert et dans l'autre la couleur jaune.
mais, je ne peux pas refaire la même procédure parce que la programme s'y perd.
et si j'en crée une autre Private par exemple, ça ne marche pas non plus ????????????????
voilà la 1ère procédure pour la cellule F4 (qui change de couleur)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim var As String
var = ActiveSheet.Columns(28).Cells.Find(Range("F4")).Offset(0, 1)
Set plage = ActiveSheet.Range("F4")
With plage.Interior
.ColorIndex = var
End With
Set plage = Nothing
End Sub
maintenant pour la cellule L4 qui devrait avoir les mêmes caractéristiques..........je n'y arrive pas.
peux-tu encore me rendre service?
merci d'avance Ibll
dans ma page j'ai une cellule qui change de couleur à l'aide du menu crée par la validation des données.
tout va bien.......
sauf que je voudrais mettre une 2nd cellule qui fonctionne de la même manière et ainsi pouvoir avoir par exemple dans l'une la couleur vert et dans l'autre la couleur jaune.
mais, je ne peux pas refaire la même procédure parce que la programme s'y perd.
et si j'en crée une autre Private par exemple, ça ne marche pas non plus ????????????????
voilà la 1ère procédure pour la cellule F4 (qui change de couleur)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim var As String
var = ActiveSheet.Columns(28).Cells.Find(Range("F4")).Offset(0, 1)
Set plage = ActiveSheet.Range("F4")
With plage.Interior
.ColorIndex = var
End With
Set plage = Nothing
End Sub
maintenant pour la cellule L4 qui devrait avoir les mêmes caractéristiques..........je n'y arrive pas.
peux-tu encore me rendre service?
merci d'avance Ibll
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 750
22 sept. 2009 à 10:00
22 sept. 2009 à 10:00
salut,
Je dois être mal réveillé car je ne comprends pas ce que tu souhaites réaliser...
Je dois être mal réveillé car je ne comprends pas ce que tu souhaites réaliser...
Bon voyons!!!!!
j'ai une cellule avec un menu déroulant "vert, bleu, rouge, etc.......;" et en cliquant sur une couleur la cellule prend la couleur désirée. ça! ça marche.
ex : je sélectionne jaune, et la cellule devient jaune
mais si je veux faire une autre cellule fonctionnant sur le même principe mais avec une autre couleur
ex: je veux que celle-ci soit rouge (alors que l'autre reste toujours jaune).
j'espère que c'est clair !!!
je ne peux pas utiliser la même procédure pour les deux cellules par ce l'ordi semble ne plus retrouver ses petits.
comment puis-je faire?
j'ai une cellule avec un menu déroulant "vert, bleu, rouge, etc.......;" et en cliquant sur une couleur la cellule prend la couleur désirée. ça! ça marche.
ex : je sélectionne jaune, et la cellule devient jaune
mais si je veux faire une autre cellule fonctionnant sur le même principe mais avec une autre couleur
ex: je veux que celle-ci soit rouge (alors que l'autre reste toujours jaune).
j'espère que c'est clair !!!
je ne peux pas utiliser la même procédure pour les deux cellules par ce l'ordi semble ne plus retrouver ses petits.
comment puis-je faire?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 750
23 sept. 2009 à 16:11
23 sept. 2009 à 16:11
Pourquoi pas? :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim var As String
var = ActiveSheet.Columns(28).Cells.Find(Range("F4")).Offset(0, 1)
Set plage = ActiveSheet.Range("F4")
With plage.Interior
.ColorIndex = var
End With
Set plage = Nothing
var = ActiveSheet.Columns(28).Cells.Find(Range("B4")).Offset(0, 1)
Set plage = ActiveSheet.Range("B4")
With plage.Interior
.ColorIndex = var
End With
Set plage = Nothing
End Sub
J'ai choisit B4 et F4...
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim var As String
var = ActiveSheet.Columns(28).Cells.Find(Range("F4")).Offset(0, 1)
Set plage = ActiveSheet.Range("F4")
With plage.Interior
.ColorIndex = var
End With
Set plage = Nothing
var = ActiveSheet.Columns(28).Cells.Find(Range("B4")).Offset(0, 1)
Set plage = ActiveSheet.Range("B4")
With plage.Interior
.ColorIndex = var
End With
Set plage = Nothing
End Sub
J'ai choisit B4 et F4...
Bonjour,
j'essaye et je te tiens au courant.
merci encore de rester "connecté" sur mes problèmes informatiques
A@
j'essaye et je te tiens au courant.
merci encore de rester "connecté" sur mes problèmes informatiques
A@
Alors là ! Pijaku merci beaucoup.
ça marche impécable.
pour l'instant je n'ai pas d'autres questions à te poser.............;;sauf si tu me encore m'aider concernant les paramétrages de graphiques incorporés suite à une macro.
j'ai mis un post il y a quelques jours.
merci encore et bonne journée
ça marche impécable.
pour l'instant je n'ai pas d'autres questions à te poser.............;;sauf si tu me encore m'aider concernant les paramétrages de graphiques incorporés suite à une macro.
j'ai mis un post il y a quelques jours.
merci encore et bonne journée
bonjour,
Je suis dans une situation similaire. J'ai des listes déroulantes et quand une valeur de la liste est choisie cela me met des cellules en fond rouge. Evidement lorsqu'on change la valeur de la liste déroulante c'est d'autre cellules qui deviennent rouge. J'aimerai selectionner ses cellules pour pouvoir les intégrer dans les "cellules variables" du solveur excel mais je bloque un peu.
J'ai tenté une approche avec le code ci-dessous sans succes.
For Each Cell In Sheets("Feuil1").Range("B2:D16")
If Cell.Interior.Color = 255 Then
SolverOK SetCell:=Range("J2"), MaxMinVal:=3, ValueOf:=0,
ByChange:=Cell.Value
End If
Next
Si quelqu'un peut m'aider merci.
Je suis dans une situation similaire. J'ai des listes déroulantes et quand une valeur de la liste est choisie cela me met des cellules en fond rouge. Evidement lorsqu'on change la valeur de la liste déroulante c'est d'autre cellules qui deviennent rouge. J'aimerai selectionner ses cellules pour pouvoir les intégrer dans les "cellules variables" du solveur excel mais je bloque un peu.
J'ai tenté une approche avec le code ci-dessous sans succes.
For Each Cell In Sheets("Feuil1").Range("B2:D16")
If Cell.Interior.Color = 255 Then
SolverOK SetCell:=Range("J2"), MaxMinVal:=3, ValueOf:=0,
ByChange:=Cell.Value
End If
Next
Si quelqu'un peut m'aider merci.