Select Case

  • Initiateur de la discussion gerome1980
  • Date de début
G

gerome1980

Guest
Bonjour tout le monde,

voilà j'ai un problème avec select case dans ma fonction ci-dessous.
L'argument sol est soit u, soit t. Est-il possible de faire un select case avec ce type d'argument?

Code:
Function sollic(sol As Variant, chargt, abscisse As Double)
Application.Volatile
Dim Cell As Range
longueur = Range('Longueur')

Select Case sol

    Case 'u'
    
trs = 'u'

    Case 't'
    
u = 0
For j = 1 To 10000
If Sheets('LISTING').Range('A' & j).Value = longueur + 1000000 And Sheets('LISTING').Range('B' & j).Value = abscisse Then
u = u + 1
 Set Cell = Sheets('LISTING').Range('C' & j & ':D' & j)
End If
If u = chargt Then GoTo label1
Next j
label1:
trs = MaxRel(Cell)

End Select

End Function

Merci de votre attention,

Jerome
 
G

gerome1980

Guest
Bonjour José,

je voudrais que ma fonction sollic si je rentre t comme argument aille chercher dans la feuille 'LISTING' deux cellules (Cj et Dj).
Cette recherche de valeur dépend de l'argument chargt; j'incrémente u à chaque boucle jusqu'à obtenir u=chargt.
Voilà le code 'corrigé' (pour sollic):
Code:
Function sollic(sol As String, chargt, abscisse As Double)
Application.Volatile
Dim Cell As Range
longueur = Range('Longueur')

Select Case sol

    Case hello
    
sollic = 'hello'

    Case t
    
u = 0
For j = 1 To 10000
If Sheets('LISTING').Range('A' & j).Value = longueur + 1000000 And Sheets('LISTING').Range('B' & j).Value = abscisse Then
u = u + 1
 Set Cell = Sheets('LISTING').Range('C' & j & ':D' & j)
End If
If u = chargt Then Exit For
Next j
sollic = MaxRel(Cell)

End Select

End Function

Merci,

Jerome
 

Gorfael

XLDnaute Barbatruc
Salut gerome1980 écrit:
Je comprends pas tout
je voudrais que ma fonction sollic si je rentre t comme argument aille chercher dans la feuille 'LISTING' deux cellules (Cj et Dj).
Cette recherche de valeur dépend de l'argument chargt; j'incrémente u à chaque boucle jusqu'à obtenir u=chargt.
Voilà le code 'corrigé' (pour sollic):
Code:
Function sollic(sol As String, chargt, abscisse As Double)
'Sol : texte transmis
'chargt : Double transmis 
'abscisse : double transmis

'Application.Volatile => But ?
Dim Cell As Range 'Cell = cellule
longueur = Range('Longueur') 'Pas déclarée : valeur de la cellule nommée 'longueur' ?

Select Case sol 'Variable testée sol = texte
    Case hello 'sol='hello' ?
        sollic = 'hello'
    Case t 'c'est quoi t ?
        u = 0
        For j = 1 To 10000
        'Boucle de 1 à 10000
            If Sheets('LISTING').Range('A' & j).Value = longueur + 1000000 And Sheets('LISTING').Range('B' & j).Value = abscisse Then
                u = u + 1
                 Set Cell = Sheets('LISTING').Range('C' & j & ':D' & j)
            End If
            If u = chargt Then Exit For
        Next j
    sollic = MaxRel(Cell)
End Select

End Function

Bon, je suis un peu paumé :
Tu utilises select case pour 2 valeurs et si aucune des 2 ?
Dans le cas où sol=t (C'est quoi t ?)
Tu lances une boucle bizarre :
tu utilises 2 compteurs u et J pour sortir
un seul suffit
tu charges cell avec C et D, à chaque A=longueur et B=abscisse, alors que tu n'utilises que la valeur correspondant à la dernière ligne chargée

Je n'ai pas d'info sur la fonction MaxRel
Je te propose déjà d'épurer (de nous autres) ton code :

Code:
Function sollic(sol As String, chargt, abscisse As Double)

Dim Cell As Range 
longueur = Range('Longueur') + 1000000

Sheets('LISTING').activate
Select Case sol 
    Case hello 'sol='hello' ?
        sollic = 'hello'
    Case t 
        For j = 10000 To 1 step -1
            If Cells(j,1).Value = longueur And _
            Cells(j,2).Value = abscisse Then
                 Set Cell = Range('C' & j & ':D' & j)
                 Exit for
            End If
        Next j
        sollic = MaxRel(Cell)
    Case else
        sollic = 'Pas de valeur'
End Select

End Function

pour j, il serait sans doute préférable de trouver la ligne contenant la dernière valeur, et de tester à partir de cette ligne
Dans le cas d'un compteur, Cells(ligne,colonne) me semble plus adaptée comme instruction.
A+
 

Discussions similaires

Réponses
11
Affichages
296

Statistiques des forums

Discussions
312 228
Messages
2 086 421
Membres
103 205
dernier inscrit
zch