VBA création d'une boucle
Résolu/Fermé
A voir également:
- VBA création d'une boucle
- Creation compte gmail - Guide
- Création compte google - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Création organigramme - Guide
- Création groupe whatsapp - Guide
10 réponses
Farfadet88
Messages postés
6293
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
29 avril 2020
1 369
28 sept. 2010 à 16:33
28 sept. 2010 à 16:33
Pourquoi ne pas passer par une mise en forme conditionnelle simplement par excel?
Sinon tu peux tenter avec un truc du genre
dim i as integer
for i=1 to 10 (tableau de ligne 1 à 10)
If Range("Ci") = FAUX Then
Rows("i:2").Select
With Selection.Interior
.PatternColorIndex = 1
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Else
End If
next i
End Sub
Sinon tu peux tenter avec un truc du genre
dim i as integer
for i=1 to 10 (tableau de ligne 1 à 10)
If Range("Ci") = FAUX Then
Rows("i:2").Select
With Selection.Interior
.PatternColorIndex = 1
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Else
End If
next i
End Sub
Bonjour,
Merci pour ta réponse rapide !
C'est une manip' que je fais plusieurs fois par jour en passant par la mise en forme conditionnelle, et j'aimerais l'automatiser, car elle me fait perdre du temps.
C'est pourquoi j'aimerais créer une macro.
Concernant ton code, j'ai un message d'erreur qui dit "La méthode 'Range' de l'Objet '_Global' à échoué", du coup j'ai remplacé par cells (3, i)
--> Là je n'ai pas de message d'erreur, mais rien ne se passe sur mon fichier.
A quoi cela peut-il être dû ? Est-ce cohérent ?
Autre question, dans ton code, tu mets Rows("i:2"), c'est plutôt Rows("i:i"), non ?
Encore merci
Merci pour ta réponse rapide !
C'est une manip' que je fais plusieurs fois par jour en passant par la mise en forme conditionnelle, et j'aimerais l'automatiser, car elle me fait perdre du temps.
C'est pourquoi j'aimerais créer une macro.
Concernant ton code, j'ai un message d'erreur qui dit "La méthode 'Range' de l'Objet '_Global' à échoué", du coup j'ai remplacé par cells (3, i)
--> Là je n'ai pas de message d'erreur, mais rien ne se passe sur mon fichier.
A quoi cela peut-il être dû ? Est-ce cohérent ?
Autre question, dans ton code, tu mets Rows("i:2"), c'est plutôt Rows("i:i"), non ?
Encore merci
Farfadet88
Messages postés
6293
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
29 avril 2020
1 369
28 sept. 2010 à 17:01
28 sept. 2010 à 17:01
"c" & i à mettre à la place de ci, autant pour moi
Je suis désolée, j'ai encore un message d'erreur :
Voici le code :
Sub Mise_en_forme()
Dim i As Integer
For i = 1 To 10
If Range("c" & i) = FAUX Then
Rows("i:i").Select
With Selection.Interior
.PatternColorIndex = 1
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Else
End If
Next i
End Sub
Le message d'erreur est "Erreur définie par l'objet ou par l'application" sur la ligne "Rows("i:i").Select"
Qu'est-ce qui cloche ?
Merci
Voici le code :
Sub Mise_en_forme()
Dim i As Integer
For i = 1 To 10
If Range("c" & i) = FAUX Then
Rows("i:i").Select
With Selection.Interior
.PatternColorIndex = 1
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Else
End If
Next i
End Sub
Le message d'erreur est "Erreur définie par l'objet ou par l'application" sur la ligne "Rows("i:i").Select"
Qu'est-ce qui cloche ?
Merci
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
Modifié par Polux31 le 28/09/2010 à 18:17
Modifié par Polux31 le 28/09/2010 à 18:17
Bonjour,
Pourquoi séléctionner la ligne avec Rows() ???
Le Else est inutile dans le If ... End If
D'autre part, si ton tableau est susceptible d'avoir des lignes supplémentaires le For ... Next ne bouclera que sur le nombre défini et il faudra intervenir sur le code pour modifier la valeur max.
Pour être sûr de prendre toujours toutes les lignes sans modifier le code, on recherche la dernière ligne renseignée du tableau.
;o)
Pourquoi séléctionner la ligne avec Rows() ???
If Range("c" & i) = FAUX Then Range("c" & i).Select With Selection.Interior .PatternColorIndex = 1 .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With End If
Le Else est inutile dans le If ... End If
D'autre part, si ton tableau est susceptible d'avoir des lignes supplémentaires le For ... Next ne bouclera que sur le nombre défini et il faudra intervenir sur le code pour modifier la valeur max.
Pour être sûr de prendre toujours toutes les lignes sans modifier le code, on recherche la dernière ligne renseignée du tableau.
Dim DerniereLigne As Integer DerniereLigne = Range("A1").End(xlDown).Row For i = 1 To DerniereLigne If If Range("c" & i) = FAUX Then 'etc ....
;o)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir,
L'objectif et de colorer toute la ligne et uniquement la cellule.
Mais je n'arrive pas à sélectionner une ligne sans spécifier le n°.
Comment puis-je faire ?
Si je mets Range("i:i").Select, il me colore ma colonne I.
L'objectif et de colorer toute la ligne et uniquement la cellule.
Mais je n'arrive pas à sélectionner une ligne sans spécifier le n°.
Comment puis-je faire ?
Si je mets Range("i:i").Select, il me colore ma colonne I.
J'ai trouvé, il fallait saisir :
Rows(i & ":" & i).Select
Merci à tous pour votre aide !
Rows(i & ":" & i).Select
Merci à tous pour votre aide !
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
28 sept. 2010 à 19:14
28 sept. 2010 à 19:14
Ok j'avais mal lu ^^
Rows(i).Select est suffisant pour sélectionner la ligne entière.
;o)
Rows(i).Select est suffisant pour sélectionner la ligne entière.
;o)
Re bonjour,
J'ai essayé d'étendre le code en ajoutant d'autres conditions derrière.
'Création Variable
Dim i As Integer
For i = 1 To 1000
'Mise en Forme
If Range("AG" & i) = SUP Then
Rows(i).Select
With Selection.Interior
.ColorIndex = 40
.Pattern = xlSolid
.PatternColorIndex = 1
End With
Else
If Range("AG" & i) = PRE Then
Rows(i).Select
With Selection.Interior
.ColorIndex = 39
.Pattern = xlSolid
.PatternColorIndex = 1
End With
Else
If Range("AG" & i) = LMT Then
Rows(i).Select
With Selection.Interior
.ColorIndex = 37
.Pattern = xlSolid
.PatternColorIndex = 1
End With
Else
If Range("AI" & i) = T Then
Rows(i).Select
Selection.Font.Bold = True
End If
Next i
J'ai un message d'erreur qui dit "Next sans For"
--> Comment se fait-il qu'il ne détecte pas le For ?
Merci
J'ai essayé d'étendre le code en ajoutant d'autres conditions derrière.
'Création Variable
Dim i As Integer
For i = 1 To 1000
'Mise en Forme
If Range("AG" & i) = SUP Then
Rows(i).Select
With Selection.Interior
.ColorIndex = 40
.Pattern = xlSolid
.PatternColorIndex = 1
End With
Else
If Range("AG" & i) = PRE Then
Rows(i).Select
With Selection.Interior
.ColorIndex = 39
.Pattern = xlSolid
.PatternColorIndex = 1
End With
Else
If Range("AG" & i) = LMT Then
Rows(i).Select
With Selection.Interior
.ColorIndex = 37
.Pattern = xlSolid
.PatternColorIndex = 1
End With
Else
If Range("AI" & i) = T Then
Rows(i).Select
Selection.Font.Bold = True
End If
Next i
J'ai un message d'erreur qui dit "Next sans For"
--> Comment se fait-il qu'il ne détecte pas le For ?
Merci
cousinhub29
Messages postés
969
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
28 novembre 2024
345
29 sept. 2010 à 10:24
29 sept. 2010 à 10:24
Bonjour,
En VBA, les .Select sont rarement nécessaires...
Essaie avec ce code :
Bonne journée
En VBA, les .Select sont rarement nécessaires...
Essaie avec ce code :
Sub essai() Dim i As Integer For i = 1 To Range("AG65000").End(xlUp).Row If Range("AG" & i) = "SUP" Then Rows(i).Interior.ColorIndex = 40 ElseIf Range("AG" & i) = "PRE" Then Rows(i).Interior.ColorIndex = 39 ElseIf Range("AG" & i) = "LMT" Then Rows(i).Interior.ColorIndex = 37 End If If Range("AI" & i) = "T" Then Rows(i).Font.Bold = True End If Next i End Sub
Bonne journée