Optimisation code

Bonjour

je suis en train de programmer un système de comparaison de valeur et update si besoin était.

j'ai une valeur staff_WP qui peut aller de 1 à10

a l'heure actuelle je n'ai comparé que les valeurs pour staff_WP = 1

If (staff_WP = "1") Then
    If (get_total_heurs_WP1 <> Staff_hours) Then
    answer = MsgBox("Update? " & Staff_hours & " to  " & get_total_heurs_WP1, vbQuestion _
    + vbYesNo + vbDefaultButton2, "Confirmation")
    If answer = vbYes Then
    Sheets("Staff").Range("I" & maligne).Value = get_total_heurs_WP1
    End If
    End If

    If (get_total_pm_WP1 <> Staff_pm) Then
    answer = MsgBox("Update? " & Staff_pm & " to  " & get_total_pm_WP1, vbQuestion _
    + vbYesNo + vbDefaultButton2, "Confirmation")
    If answer = vbYes Then
    Sheets("Staff").Range("J" & maligne).Value = get_total_pm_WP1
    End If
    End If

    If (get_valorisation_WP1 <> Staff_valorisation) Then
    answer = MsgBox("Update? " & Staff_valorisation & " to  " & get_valorisation_WP1, vbQuestion _
    + vbYesNo + vbDefaultButton2, "Confirmation")
    If answer = vbYes Then
    Sheets("Staff").Range("K" & maligne).Value = get_valorisation_WP1
    End If
    End If
End If

mais au lieu de dupliquer ce code 10 fois en ajustant les variables à récupérer je me demande si pas possible de procéder de façon plus adapté avec style

For i = 1 To 10
If (staff_WP = i) Then

End If
Next

mais aussi comment adapter la récupération de variable selon I

get_total_heurs_WP1 en get_total_heurs_WP & i

merci par avance pour votre aide 

ps: j'ai tenté de mon coté mais

get_total_heurs_WP & i n'est pas correct

Bonjour,

Tu devrais te pencher du côté des variables tableaux.

Un petit exemple.

Tu as quelque chose comme ceci :

Dim get_total_heurs_WP1 AS Long, get_total_heurs_WP2 AS Long, get_total_heurs_WP3 As Long

get_total_heurs_WP1 = 10
get_total_heurs_WP2 = 20
get_total_heurs_WP3 = 30

Et, en effet, tu ne peux pas utiliser get_total_heurs_WP & i

Maintenant, regarde ceci, avec une variable de type tableau :

Dim get_total_heurs_WP(1 To 3) As Long, i As Long
get_total_heurs_WP(1) = 10
get_total_heurs_WP(2) = 20
get_total_heurs_WP(2) = 30

For i = 1 To 3 'ou encore : For i = LBound(get_total_heurs_WP) To UBound(get_total_heurs_WP)
   MsgBox get_total_heurs_WP(i)
Next

je vais regarder tout cela

merci à vous franck

bonne journée

Je vous remercie pour cette méthode qui fonctionne

néanmoins je rencontre un soucis

MsgBox get_total_pm_WP(i) => me renvoit la bonne valeur mais arrondi

c'est à dire par exemple me renvoi 3 au lieu de 2,72

comment procéder afin que cela me renvoi la valeur exacte?

merci

exemple get_total_pm_WP(5) = wb.Worksheets("TOTAL").Range("M15")

si je verifie un msgbox sur wb.Worksheets("TOTAL").Range("M15") cela me renvoit 2,72

si je fais MsgBox get_total_pm_WP5 cela me renvoit 2,72

si je fais Msgbox MsgBox get_total_pm_WP(5) cela renvoi 3

Bonjour,

Au lieu d'utiliser des variables long qui stockent des entiers utilise des variables qui stockent des nombres décimaux...

A+

@Galopin : Je crois que l'ami darkangel est plus adepte du tableur Excel que de son complément VBA...

Donc, le type de variable Integer ou Long, ne renvoie qu'un nombre entier. Pour conserver la partie décimale d'un nombre, par l'intermédiaire d'une variable, il convient de typer cette variable en conséquence. Le plus simple est de typer en "Double" :

Dim get_total_heurs_WP(1 To 3) As Double, i As Long
get_total_heurs_WP(1) = 10.54
get_total_heurs_WP(2) = 20.45
get_total_heurs_WP(3) = 30.56

For i = 1 To 3 'ou encore : For i = LBound(get_total_heurs_WP) To UBound(get_total_heurs_WP)
   MsgBox get_total_heurs_WP(i)
Next

bonne soirée.

à demain.

Bonjour à vous deux.

merci pour ces explications entre long et Double (je n'avais pas eu à gerer cela avant)

cela fonctionne désormais :)

Bonne journée

Rechercher des sujets similaires à "optimisation code"