Excel: Appliquer une macro à une colonne
Résolu
VdM001
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
VdM001 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
VdM001 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
Bonjour, c'est encore moi (avec un compte cette fois-ci),
Pour ceux qui n'auraient pas suivi mes premiers messages; j'essayais de créer une macro et j'avais quelques soucis.
Maintenant, j'ai réussi à créer ma macro et elle fonctionne. Mais comme j'ai beaucoup de lignes à vérifier, j'aimerais savoir si il est possible d'appliquer ma macro à toutes les lignes de mon tableau en un seul coup.
Je ne vais pas réécrire ma macro car même si elle est plus claire que ma précédente formule, cela reste tout de même assez indigeste.
Voici un lien vers une partie de mon tableau:
https://www.cjoint.com/?ixos2fcI8D
Donc j'applique ma macro sur une cellule contenant "1" de la colonne "Rank"; et après tous les If et autres de la macro; si mes données sont valides, la macro colore la ligne en vert; sinon en orange. Et si je l'applique sur une cellule contenant 2; ça colore la ligne dans la même couleur que la case à la gauche de la cellule active.
Donc voilà, j'aimerais savoir si il est possible d'appliquer la macro à toutes les cases de ma colonne Rank en 1 coup.
Et aussi; comme vous pouvez le voir aux lignes 3 et 4, ma macro n'a pas coloré les cellules fusionnées à gauches de la cellule "1" et du coup quand j'ai appliqué la macro sur la cellule "2"; ça l'a laissé en blanc...
Voilà, je me doute que ça peut apraitre basique mais ça me bloque pas mal.
Merci d'avance pour votre aide; et merci encore pour toute l'aide que vous m'avez déjà apportée.
Pour ceux qui n'auraient pas suivi mes premiers messages; j'essayais de créer une macro et j'avais quelques soucis.
Maintenant, j'ai réussi à créer ma macro et elle fonctionne. Mais comme j'ai beaucoup de lignes à vérifier, j'aimerais savoir si il est possible d'appliquer ma macro à toutes les lignes de mon tableau en un seul coup.
Je ne vais pas réécrire ma macro car même si elle est plus claire que ma précédente formule, cela reste tout de même assez indigeste.
Voici un lien vers une partie de mon tableau:
https://www.cjoint.com/?ixos2fcI8D
Donc j'applique ma macro sur une cellule contenant "1" de la colonne "Rank"; et après tous les If et autres de la macro; si mes données sont valides, la macro colore la ligne en vert; sinon en orange. Et si je l'applique sur une cellule contenant 2; ça colore la ligne dans la même couleur que la case à la gauche de la cellule active.
Donc voilà, j'aimerais savoir si il est possible d'appliquer la macro à toutes les cases de ma colonne Rank en 1 coup.
Et aussi; comme vous pouvez le voir aux lignes 3 et 4, ma macro n'a pas coloré les cellules fusionnées à gauches de la cellule "1" et du coup quand j'ai appliqué la macro sur la cellule "2"; ça l'a laissé en blanc...
Voilà, je me doute que ça peut apraitre basique mais ça me bloque pas mal.
Merci d'avance pour votre aide; et merci encore pour toute l'aide que vous m'avez déjà apportée.
A voir également:
- Excel: Appliquer une macro à une colonne
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel moyenne - Guide
8 réponses
Bonjour,
Tu pourrais utiliser cette boucle :
for i = 2 to [C65536].end(xlup).row
if cells(i,3) = .....
next i
syntaxe cells() : cells(n° ligne,n° colonne)
eric
Tu pourrais utiliser cette boucle :
for i = 2 to [C65536].end(xlup).row
if cells(i,3) = .....
next i
syntaxe cells() : cells(n° ligne,n° colonne)
eric
Bonjour,
Au passage, je pense vous pouvez le faire sans procédure en utilisant la mise en forme conditionnelle.
Au passage, je pense vous pouvez le faire sans procédure en utilisant la mise en forme conditionnelle.
Si vous y tenez vraiment; mais accrochez vous bien ^^
=SI(C3=1;SI(OU(D3="A";D3="B";D3="C");SI(B3="";"ok";"flagger"); SI(ET(D3="D";C4=2;OU(D4="A";D4="C"));SI(OU(B3="Yes";B3="No");"ok";"flagger");SI(ET(D3="D";D4="D";B3="no";C4=2);"ok";"flagger")));"NA")
Et encore, les A,B,C,D remplacent des noms un peu plus longs que ça.
=SI(C3=1;SI(OU(D3="A";D3="B";D3="C");SI(B3="";"ok";"flagger"); SI(ET(D3="D";C4=2;OU(D4="A";D4="C"));SI(OU(B3="Yes";B3="No");"ok";"flagger");SI(ET(D3="D";D4="D";B3="no";C4=2);"ok";"flagger")));"NA")
Et encore, les A,B,C,D remplacent des noms un peu plus longs que ça.
Ok merci eriiic
Finalement j'ai fait quelque chose de similaire: j'ai ajouté:
For Each Cell in Range("C1:C5000").Cells
Et puis dans toutes mes conditions, j'ai changé mon ActiveCell en Cell et ça fonctionne. (en rajoutant un Next à la fin bien sur).
Maintenant, il me reste le problème de la coloration de la ligne entière lorsqu'il y a des cellules fusionnées. Je pense à le régler en ajoutant une condition ou deux mais si quelqu'un a une meilleure idée, je suis preneur.
En tout cas, déjà merci.
Finalement j'ai fait quelque chose de similaire: j'ai ajouté:
For Each Cell in Range("C1:C5000").Cells
Et puis dans toutes mes conditions, j'ai changé mon ActiveCell en Cell et ça fonctionne. (en rajoutant un Next à la fin bien sur).
Maintenant, il me reste le problème de la coloration de la ligne entière lorsqu'il y a des cellules fusionnées. Je pense à le régler en ajoutant une condition ou deux mais si quelqu'un a une meilleure idée, je suis preneur.
En tout cas, déjà merci.
Salut,
regarde ce code qui recherche cellules fusionnées de A2 à F100 à adapter
Sub ColoriseLignesCellulesFusionnees()
Dim cell As Range
Dim Maplage As Range
Set Maplage = Range("A2:F100")
With ActiveSheet
For Each cell In Maplage
If cell.MergeCells = True Then cell.EntireRow.Interior.ColorIndex = 3
Next cell
End With
End Sub
regarde ce code qui recherche cellules fusionnées de A2 à F100 à adapter
Sub ColoriseLignesCellulesFusionnees()
Dim cell As Range
Dim Maplage As Range
Set Maplage = Range("A2:F100")
With ActiveSheet
For Each cell In Maplage
If cell.MergeCells = True Then cell.EntireRow.Interior.ColorIndex = 3
Next cell
End With
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
Je travaille sans déplacement après validation et cela peut venir de cette fonction si elle est activée dans ton système.
tu peux le contrôler dans les options d'Excel (Outils/Option/onglet Modification
regarde s'il y a une coche est en face déplacer la sélection après validation
ou directement sur la feuille de calcul, pointe la cellule par exemple B5 et clic sur entrée, dis moi dans quelle cellule se trouve la cellule active après.
Si la cellule active se déplace, soit tu décoches cette fonction soit je revois le code en fonction du déplacement de la cellule
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Je travaille sans déplacement après validation et cela peut venir de cette fonction si elle est activée dans ton système.
tu peux le contrôler dans les options d'Excel (Outils/Option/onglet Modification
regarde s'il y a une coche est en face déplacer la sélection après validation
ou directement sur la feuille de calcul, pointe la cellule par exemple B5 et clic sur entrée, dis moi dans quelle cellule se trouve la cellule active après.
Si la cellule active se déplace, soit tu décoches cette fonction soit je revois le code en fonction du déplacement de la cellule
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Nop ça ne change rien. Moi je travaille avec le déplacement après validation mais j'ai essayé sans et c'est le même résultat.
Mais je suis pas sur de m'être bien exprimé sur le souci.
Donc votre fonction colore bien les lignes de la cellule fusionnée (donc si la cellule fusionnée prend 3 lignes, les 3 lignes sont colorées) mais la cellule fusionnée en elle-même reste incolore.
Mais je suis pas sur de m'être bien exprimé sur le souci.
Donc votre fonction colore bien les lignes de la cellule fusionnée (donc si la cellule fusionnée prend 3 lignes, les 3 lignes sont colorées) mais la cellule fusionnée en elle-même reste incolore.
Re,
Normal je n'avais traité que les cellules fusionnées horizontalement
j'ai rajouter une ligne au code
Sub ColoriseLignesCellulesFusionnees()
Dim cell As Range
Dim Maplage As Range
Set Maplage = Range("A2:F100")
With ActiveSheet
For Each cell In Maplage
If cell.MergeCells = True Then cell.EntireRow.Interior.ColorIndex = 3
If cell.MergeCells = True Then cell.Interior.ColorIndex = 3
Next cell
End With
End Sub
Par contre il est possible de coloriser que les cellules fusionnées, dans ce cas supprime cette ligne
If cell.MergeCells = True Then cell.EntireRow.Interior.ColorIndex = 3
Normal je n'avais traité que les cellules fusionnées horizontalement
j'ai rajouter une ligne au code
Sub ColoriseLignesCellulesFusionnees()
Dim cell As Range
Dim Maplage As Range
Set Maplage = Range("A2:F100")
With ActiveSheet
For Each cell In Maplage
If cell.MergeCells = True Then cell.EntireRow.Interior.ColorIndex = 3
If cell.MergeCells = True Then cell.Interior.ColorIndex = 3
Next cell
End With
End Sub
Par contre il est possible de coloriser que les cellules fusionnées, dans ce cas supprime cette ligne
If cell.MergeCells = True Then cell.EntireRow.Interior.ColorIndex = 3