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 -
 

saradi

XLDnaute Nouveau
bonsoir mapomme
ce que vous dite c'est dans le cas normale par contre dans mon cas j'appelle une fonction avec des paramètre pour le paramètre de la ligne il est exécutable tandis que le paramètre de la cellule est erroné
 

laurent950

XLDnaute Impliqué
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
 

saradi

XLDnaute Nouveau
Laurent950 j'ai choisi Q5 comme range mais lorsque j'appelle la procédure cela ne marche pas
cordialement
 

eriiiic

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
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, saradi, ma pomme, eriiiic

Ne sachant pas ce quoi doit faire plan, j'ai testé cet autre plan ;)
(sur une feuille vierge)
Il se passe bien quelque chose, ;)
Reste à savoir si j'étais proche du but ;)
VB:
Sub plantr()
[D4:E4] = Array(True, False) ' pour test1
plan 4, Range("Q5")
MsgBox "pause"
[D4:E4] = Array(True, True) 'pour test 2
plan 4, Range("Q5")
End Sub

Private Sub plan(ligne As Long, run As Range)
'condition
If Cells(ligne, 4) = True And Cells(ligne, 5) = False Then
'reinitialiser la ligne
Cells(ligne, 6).Resize(, 14).Interior.Color = xlNone
Else
'selection du plan si oui
Cells(ligne, 6).Resize(, 14).Interior.Color = 255
End If
End Sub
 

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
 

Fichiers joints

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
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas