VB excel, changer de ligne
Résolu/Fermé
D-Rabbit
-
20 janv. 2010 à 16:29
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 21 janv. 2010 à 10:39
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 21 janv. 2010 à 10:39
A voir également:
- VB excel, changer de ligne
- Changer dns - Guide
- Aller à la ligne excel - Guide
- Liste déroulante excel - Guide
- Site de vente en ligne particulier - Guide
- Partage de photos en ligne - Guide
24 réponses
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
20 janv. 2010 à 18:17
20 janv. 2010 à 18:17
Bonjour,
;o)
For i = 1 to 56 If Sheets(1).Range("G" & i).Value = "toto" Then MsgBox "Gagné !!!" Else MsgBox " Perdu !!! Try again ..." End If
;o)
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
20 janv. 2010 à 20:30
20 janv. 2010 à 20:30
salut.... à tous
pour terminer l'exemple...
bien sur après il y a next i
Heu! c'était pour dire bonjour. : )
pour terminer l'exemple...
bien sur après il y a next i
Heu! c'était pour dire bonjour. : )
Merci, mais je vais vous donner un bout de code pour que ce soit plus clair.
s = Range("J6")
d = Range(Cells("7" & n)).Interior.Color
j = Range("A3")
n = 6
For n = n To 55 Step 1
If statut <> "Terminée" And d < jour Then
d = RGB(255, 0, 0)
ElseIf d > jour - 7 Then
d = RGB(255, 255, 0)
End If
Next
Voila, je voulais savoir ce qui cloche la dedans pour que ça ne fonctionne pas.
s = Range("J6")
d = Range(Cells("7" & n)).Interior.Color
j = Range("A3")
n = 6
For n = n To 55 Step 1
If statut <> "Terminée" And d < jour Then
d = RGB(255, 0, 0)
ElseIf d > jour - 7 Then
d = RGB(255, 255, 0)
End If
Next
Voila, je voulais savoir ce qui cloche la dedans pour que ça ne fonctionne pas.
garion28
Messages postés
1545
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011
406
21 janv. 2010 à 07:55
21 janv. 2010 à 07:55
n = 6
For n = n To 55 Step 1
tu donne une valeur a n avant la boucle et tu n'en donne pas pour l'initialisation du for
enleve le n=6 et met for n=6 to 55
le step 1 est facultatif
For n = n To 55 Step 1
tu donne une valeur a n avant la boucle et tu n'en donne pas pour l'initialisation du for
enleve le n=6 et met for n=6 to 55
le step 1 est facultatif
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Waouw, merci beaucoup, j'ai encore un soucis. :s
mon problème ce trouve là :
d = Sheets(Feuil9).Range("G" & n).Interior.Color
Il me met "Erreur d'exécution de type 13" Incompabilité de type quand je souhaite l'exécuté.
Que fais-je de faux ?
Merci énormement pour vos réponses et désolé du dérangement.
mon problème ce trouve là :
d = Sheets(Feuil9).Range("G" & n).Interior.Color
Il me met "Erreur d'exécution de type 13" Incompabilité de type quand je souhaite l'exécuté.
Que fais-je de faux ?
Merci énormement pour vos réponses et désolé du dérangement.
Bonjour
Comme tu n'as pas mis de guillemets autour de Feuil9, c'est pour lui une variable quelconque, initialisée à 0. Alors que Sheets a besoin d'une chaine (le nom de la feuille) comme paramètre
Remets des guillemets autour de Feuil9 et cette ligne-là va re-rentrer dans l'ordre - si n est initialisé à un numéro de ligne avant
Par contre, je crois que tu vas avoir de mauvaises surprises plus loin. Quand tu feras d = RGB(255, 0, 0) , ne crois surtout pas que ça fera la même chose que Sheets(Feuil9).Range("G" & n).Interior.Color = RGB(255, 0, 0) !
Au passage le for n=n to 55 avec n initialisé à 6 était parfaitement correct. pas orthodoxe, mais correct
Comme tu n'as pas mis de guillemets autour de Feuil9, c'est pour lui une variable quelconque, initialisée à 0. Alors que Sheets a besoin d'une chaine (le nom de la feuille) comme paramètre
Remets des guillemets autour de Feuil9 et cette ligne-là va re-rentrer dans l'ordre - si n est initialisé à un numéro de ligne avant
Par contre, je crois que tu vas avoir de mauvaises surprises plus loin. Quand tu feras d = RGB(255, 0, 0) , ne crois surtout pas que ça fera la même chose que Sheets(Feuil9).Range("G" & n).Interior.Color = RGB(255, 0, 0) !
Au passage le for n=n to 55 avec n initialisé à 6 était parfaitement correct. pas orthodoxe, mais correct
Je rectifie un peu mon explication : Feuil9 n'est pas une variable quelconque, c'est quand même une feuille (type worksheet). Tu as donc le choix des écritures :
d = Sheets("Feuil9").Range("G" & n).Interior.Color
ou
d = Feuil9.Range("G" & n).Interior.Color
mais dans tous les cas d = Sheets(Feuil9).Range("G" & n).Interior.Color est incorrect
d = Sheets("Feuil9").Range("G" & n).Interior.Color
ou
d = Feuil9.Range("G" & n).Interior.Color
mais dans tous les cas d = Sheets(Feuil9).Range("G" & n).Interior.Color est incorrect
D'accord, mais j'ai l'impression que l'erreur vient de ça :
d = feuil9.range("G" & n).Interior.Color
d = feuil9.range("G" & n).Interior.Color
garion28
Messages postés
1545
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011
406
21 janv. 2010 à 09:26
21 janv. 2010 à 09:26
c'est Sheets("feuil9").Range("G" & n).Interior.Color (enfin pour le Interior.color je ne suis pas sur puisque je n'utilise pas cette fonction, cependant pour le sheets et le range je suis sur)
Okay, et vous êtes sûr du ("G" & n) ? parce que quand je l'enlève et le remplace juste par "G6" par exemple, ça fonctionne.
Sheets("Feuil9").Range("G" & n).Interior.Color ou Feuil9.Range("G" & n).Interior.Color sont équivalents dans la mesure ou Feuil9 existe. Je l'ai vérifié
D-Rabbit, tu n'as très probablement pas initialisé n à un numéro de ligne comme je te l'avais dit. donc tu essayes de lire la couleur de G0, ce qui ne marche pas car G0 n'existe pas. Quel est ton message d'erreur ?
D-Rabbit, tu n'as très probablement pas initialisé n à un numéro de ligne comme je te l'avais dit. donc tu essayes de lire la couleur de G0, ce qui ne marche pas car G0 n'existe pas. Quel est ton message d'erreur ?
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
21 janv. 2010 à 09:44
21 janv. 2010 à 09:44
Bonjour D-Rabbit,
dans ce code, tu initialises la valeur de n après d = Range(Cells("7" & n)).Interior.Color ..... d'où l'erreur....
ce que je ne comprends pas c'est l'utilisation de n (et d) avant ta boucle......peux-tu stp mettre ton code que l'on regarde....
s = Range("J6") d = Range(Cells("7" & n)).Interior.Color j = Range("A3") n = 6
dans ce code, tu initialises la valeur de n après d = Range(Cells("7" & n)).Interior.Color ..... d'où l'erreur....
ce que je ne comprends pas c'est l'utilisation de n (et d) avant ta boucle......peux-tu stp mettre ton code que l'on regarde....
Merci pour votre motivation, le message d'erreur qui s'affiche est :
Erreur d'exécution "1004" : erreur définie par l'application ou par l'objet
Private Sub CommandButton1_Click()
Dim s, d, j As Variant
Dim n As Byte
n = 6
s = Feuil9.Range("J6 & n")
d = Feuil9.Range("G6 & n").Interior.Color
j = Range("A3")
For n = n To 55 Step 1
Range(d) = RGB(255, 0, 0)
ElseIf d > j - 7 Then
Range(d) = RGB(255, 255, 0)
End If
Next
MsgBox "La colonne délai a été triée", vbInformation
End Sub
Voila, je vous ai mis tout le code, en éspérant que ça puisse vous aider.
Erreur d'exécution "1004" : erreur définie par l'application ou par l'objet
Private Sub CommandButton1_Click()
Dim s, d, j As Variant
Dim n As Byte
n = 6
s = Feuil9.Range("J6 & n")
d = Feuil9.Range("G6 & n").Interior.Color
j = Range("A3")
For n = n To 55 Step 1
Range(d) = RGB(255, 0, 0)
ElseIf d > j - 7 Then
Range(d) = RGB(255, 255, 0)
End If
Next
MsgBox "La colonne délai a été triée", vbInformation
End Sub
Voila, je vous ai mis tout le code, en éspérant que ça puisse vous aider.
garion28
Messages postés
1545
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011
406
21 janv. 2010 à 09:53
21 janv. 2010 à 09:53
s = Range("J6") 'il vaudrai mieux avoir déclaré s comme une variable objet pour qu'elle puisse etre utilisé en remplacement du range("J6") d = Range(Cells("7" & n)).Interior.Color 'idem et cells ("7" & n) est faux puisque la syntaxe est cells(numligne,numcolonne) et ce n'est pas utile de le coupler a range j = Range("A3")'idem que le premier commentaire n = 6'pas utile For n = n To 55 Step 1 'remplace n=n par n=6 If statut <> "Terminée" And d < jour Then 'statut veut dire quoi ? d ne peut pas etre inférieur a jour puisque d est égal a la couleur d'une cellule d = RGB(255, 0, 0) ElseIf d > jour - 7 Then 'encore une fois, d ne peut pas etre comparé a jour car on ne compare pas une couleur a une date d = RGB(255, 255, 0) End If Next
bon ben voila mes commentaires ^^
ps: correction pour la "variable objet" j'ai vu que tu avai déclaré en variant juste au dessus
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
21 janv. 2010 à 09:57
21 janv. 2010 à 09:57
re,
plusieurs remarques :
- Feuil9.Range("J6 & n") s'écrit en fait : Feuil9.Range("J" & n)
- je ne comprends pas pourquoi utiliser des variables au debut si la valeur est fixe : Feuil9.Range("J6") suffit.
- ton initialisation de n, s, d et j ne sert à rien puisque tu ne les utilises pas (s et j) ou que tu écrases la valeur(d et n).
- ta variable d renvoi un numéro de couleur, Range(d) n'est donc pas correct.
- tu utilises ElseIF mais sans le IF ( if = "si", elseif = "sinon" => elseif ne peut s'employer que si If est avant)...
Je vois que u cherches à colorer des cases...peux-tu stp expliquer tes criteres, ce sera plus simple pour t'aider sur le code (tu parles de statut et de date au post 3) ?
plusieurs remarques :
- Feuil9.Range("J6 & n") s'écrit en fait : Feuil9.Range("J" & n)
- je ne comprends pas pourquoi utiliser des variables au debut si la valeur est fixe : Feuil9.Range("J6") suffit.
- ton initialisation de n, s, d et j ne sert à rien puisque tu ne les utilises pas (s et j) ou que tu écrases la valeur(d et n).
- ta variable d renvoi un numéro de couleur, Range(d) n'est donc pas correct.
- tu utilises ElseIF mais sans le IF ( if = "si", elseif = "sinon" => elseif ne peut s'employer que si If est avant)...
Je vois que u cherches à colorer des cases...peux-tu stp expliquer tes criteres, ce sera plus simple pour t'aider sur le code (tu parles de statut et de date au post 3) ?
Okay, merci encore et voila ce que j'ai modifié :
Private Sub CommandButton1_Click()
Dim s, d, j As Object
Dim n As Byte
s = Feuil9.Range(Cells("n & 10"))
d = Feuil9.Range(Cells("n & 7"))
j = Range("A3")
For n = 6 To 55 Step 1
If s <> "Terminée" And d < j Then
Range(d).Interior.Color = RGB(255, 0, 0)
ElseIf d > j - 7 Then
Range(d).Interior.Color = RGB(255, 255, 0)
End If
Next
MsgBox "La colonne délai a été triée", vbInformation
End Sub
Le fait est que je veux coloré les cases de la colonne G en rouge ou en jaune par rapport à J(c'est une date) et à S(c'est écrit soit "terminée", soit "en cours" soit "pas débutée".
Merci.
Private Sub CommandButton1_Click()
Dim s, d, j As Object
Dim n As Byte
s = Feuil9.Range(Cells("n & 10"))
d = Feuil9.Range(Cells("n & 7"))
j = Range("A3")
For n = 6 To 55 Step 1
If s <> "Terminée" And d < j Then
Range(d).Interior.Color = RGB(255, 0, 0)
ElseIf d > j - 7 Then
Range(d).Interior.Color = RGB(255, 255, 0)
End If
Next
MsgBox "La colonne délai a été triée", vbInformation
End Sub
Le fait est que je veux coloré les cases de la colonne G en rouge ou en jaune par rapport à J(c'est une date) et à S(c'est écrit soit "terminée", soit "en cours" soit "pas débutée".
Merci.
garion28
Messages postés
1545
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011
406
21 janv. 2010 à 10:14
21 janv. 2010 à 10:14
pour utiliser la valeur d'une cellule tu peu rajouter .value après ton range
le cells ne contient pas de "", juste le numéro de la ligne et le numéro de la colonne (séparé par une virgule) de plus dans ton cas tu doit rajouter .adress a ton cells pour renvoyer l'adresse sous la forme A1 a ton range
le cells ne contient pas de "", juste le numéro de la ligne et le numéro de la colonne (séparé par une virgule) de plus dans ton cas tu doit rajouter .adress a ton cells pour renvoyer l'adresse sous la forme A1 a ton range
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
21 janv. 2010 à 10:14
21 janv. 2010 à 10:14
Ok, essaie comme ceci :
EDIT : ptite remarque sur ta msgbox à la fin, à ta place je n'utiliserais pas le terme "triée" (c'est faux, tu ne fais aucun tri) mais plutot "traitée" ou "colorée"...
EDIT2 : autre remarque, ce code ne fait qu'une mise en forme en fonction de tes conditions, pourquoi ne pas utiliser une simple mise en forme conditionelle ?
Private Sub CommandButton1_Click() Dim n As Integer For n = 1 To 6 If Range("J" & n).Value <> "Terminée" And Range("G" & n).Value < Range("A3").Value Then Range("G" & n).Interior.Color = RGB(255, 0, 0) ElseIf d > j - 7 Then Range("G" & n).Interior.Color = RGB(255, 255, 0) End If Next MsgBox "La colonne délai a été triée", vbInformation End Sub
EDIT : ptite remarque sur ta msgbox à la fin, à ta place je n'utiliserais pas le terme "triée" (c'est faux, tu ne fais aucun tri) mais plutot "traitée" ou "colorée"...
EDIT2 : autre remarque, ce code ne fait qu'une mise en forme en fonction de tes conditions, pourquoi ne pas utiliser une simple mise en forme conditionelle ?
Waouw, génial ça fonctionne.
Merci énormement, j'étais pas si loin du but, mais je n'aurais pas su y arriver tout seul.
C'est ma première macro en VB excel, donc merci.
Bonne journée, je vais m'inscrire sur ce forum qui est génial, mon truc c'est le hardware mais j'adore la prog alors je vais pouvoir si possible aider.
Merci encore à tous. Bonne journée et bonne continuation.
Merci énormement, j'étais pas si loin du but, mais je n'aurais pas su y arriver tout seul.
C'est ma première macro en VB excel, donc merci.
Bonne journée, je vais m'inscrire sur ce forum qui est génial, mon truc c'est le hardware mais j'adore la prog alors je vais pouvoir si possible aider.
Merci encore à tous. Bonne journée et bonne continuation.
garion28
Messages postés
1545
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011
406
21 janv. 2010 à 10:22
21 janv. 2010 à 10:22
pour la proposition de tompols: s'il y a une erreur dès le premier if, rajoute le nom de la feuille devant les range ou bien utilise with sheets("feuille9") au début et end with a la fin de la procédure et met un point juste avant le range