argument procédure

saradi

XLDnaute Nouveau
vous trouverez ci apres le programme que j'essaie de faire le probleme c'est comment utiliser l'argument range lors de l'appel de la procédure


Private Sub plan(ligne As Integer, run As Range)

'condition
If Cells(ligne, 4) = True And Cells(ligne, 5) = False Then

'reinitialiser la ligne
For y = 6 To 19
Cells(ligne, y).Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Next y

'selection du plan si oui
For y = 7 To run
Cells(ligne, y).Interior.Color = 255
Next y

End If
End Sub

Sub plantr()
Call plan(4, Q5)
End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @saradi,

Deux parmi les différentes manières de désigner la cellule Q5 (Mafeuille est le nom de la feuille où se trouve la cellule Q5.
Sheets("Mafeuille").range("q5") ou Sheets("Mafeuille").cells(5,"q")
- range permet de désigner une plage (même réduite à une seule cellule) alors que Cells(Ligne,colonne) référence toujours une seule cellule -
 

laurent950

XLDnaute Accro
Bonsoir,
Q5
run As Range
For y = 7 To run (Range n'est pas définit) c'est pour cela que sa plante.

run c'est une plage ? donc définir la plage
set Q5 = Range(cells(1,1), Celles(10,1)
For y = 7 To run.row

J'ai pas le code mais c'est quelques choses comme cela
cdt
 

eriiic

XLDnaute Barbatruc
Bonjour,

j'ai choisi Q5 comme range
Non. Dans Call plan(4, Q5) Q5 est une variable, remplacer par Range("Q5")
(à moins que tu n'aies mis qq part un Set Q5 = ... mais j'ai du mal à le croire)
Si tu avais coché Déclaration obligatooire des variables tu aurais eu une alerte

VB:
For y = 7 To run
donc tu veux une valeur entière. Il faut préciser quoi : .Value ? .Column ? .Row ?
Et puisque tu ne te sers pas du Range autant passer une variable Long
eric
 

saradi

XLDnaute Nouveau
BONJOUR,
tout d'abord je te remercie pour le programme, il marche très bien mais le problème c'est que je fixe un jour et ensuite je trace le planning avant ce jour vous avez utilisé resize pour le faire dont vous avez fixé la cellule 6 est vous tracez jusqu’à la cellule 19 dans mon cas je veux faire l'inverse du 19 AU 6 est le parametre run je veux bien l 'utiliser au lieu de la cellule 19 pour que je puisse à chaque fois le changer
 

Pièces jointes

  • ESSAIparametre .xlsm
    17 KB · Affichages: 7

Staple1600

XLDnaute Barbatruc
Bonsoir

Pas sur d'avoir tout compris...mais
Avec ceci, qu'est-ce que cela donne?
VB:
Sub test_1()
[D4:E4] = Array(False, True) 'pour test
plan_2 4, Range("Q5")
End Sub
Sub test_2()
[D4:E4] = Array(True, False) 'pour test
plan_2 4, Range("S5")
End Sub
Sub test_3()
[D4:E4] = Array(False, True) 'pour test
plan_2 4, Range("I5")
End Sub
Private Sub plan_2(ligne As Long, rng As Range)
Dim flag As Boolean
flag = Cells(ligne, 4) = True And Cells(ligne, 5) = False
Range(Cells(ligne, 6), Cells(ligne, rng.Column - 1)).Interior.Color = IIf(flag, xlNone, 65535)
End Sub
 

Statistiques des forums

Discussions
312 156
Messages
2 085 819
Membres
102 992
dernier inscrit
KOSTIC