[Catégorie modifiée .Net -> VBA] Variable nom dynamique boucle for
yokulan
Messages postés37Date d'inscriptionmardi 26 avril 2005StatutMembreDernière intervention31 juillet 2012
-
17 janv. 2012 à 10:47
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
17 janv. 2012 à 11:18
Bonjour,
Je recherche la façon de pouvoir concaténer un nombre à un nom de variable pour utiliser dans une boucle for. Actuellement je fonctionne comme ceci:
If SommeP1 > 0 Or tbx_qte1.Text > 0 Then 'Si heures P1 ou Quantités Alors
NumLigne = GetLastLigne("POSTE1", "A200")
sheet = wbExcel.Worksheets.Item("POSTE1")
sheet.Range("A" & NumLigne).Value = datepicker.Value
sheet.Range("E" & NumLigne).Value = SommeP1
sheet.Range("B" & NumLigne).Value = tbx_qte1.Text
End If
'-- POSTE2 --
If SommeP2 > 0 Or tbx_qte2.Text > 0 Then
NumLigne = GetLastLigne("POSTE2", "A200")
sheet = wbExcel.Worksheets.Item("POSTE2")
sheet.Range("A" & NumLigne).Value = datepicker.Value
sheet.Range("E" & NumLigne).Value = SommeP2
sheet.Range("B" & NumLigne).Value = tbx_qte2.Text
End If
Je voudrais obtenir un truc du genre:
For i=1 to 2
If SommeP & i > 0 Or tbx_qte & i.Text > 0 Then 'Si heures P1 ou Quantités Alors
NumLigne = GetLastLigne("POSTE" & i, "A200")
sheet = wbExcel.Worksheets.Item("POSTE" & i)
sheet.Range("A" & NumLigne).Value = datepicker.Value
sheet.Range("E" & NumLigne).Value = SommeP & i
sheet.Range("B" & NumLigne).Value = tbx_qte & i.Text
End If
next
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 17 janv. 2012 à 10:54
Bonjour,
Avant toute autre chose : Si tu développes sous VBA/Excel, il te faut poster dans la section adéquate (Langages dérivés > VBA) et non da ns la présente !
Nous te serions reconnaissant de bien vouloir observer cette discipline à l'avenir (c'est important)
les expressions telles que celle-ci :
sheet = wbExcel.Worksheets.Item("POSTE" & i)
sont correctes
Il nous est par contre impossible de vérifier le bien fondé de celle-ci :
NumLigne = GetLastLigne("POSTE" & i, "A200")
sans connaître le code exact (entête comprise) de ta fonction Numligne !
______________
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
yokulan
Messages postés37Date d'inscriptionmardi 26 avril 2005StatutMembreDernière intervention31 juillet 2012 17 janv. 2012 à 10:56
Désolé j'ai oublié de donner le code de la fonction. Sinon je code sous VB.NET et non VBA.
Voici le code de la fonction GetLastLigne():
Function GetLastLigne(ByVal feuille As String, ByVal dernierecellule As String)
Dim lastligne As Integer = 0
sheet = wbExcel.Worksheets.Item(feuille)
lastligne = sheet.Range(dernierecellule).End(Excel.XlDirection.xlUp).Row
If feuille = "POINTAGES" Then
If lastligne = 11 Then
lastligne = lastligne + 2
Else
lastligne = lastligne + 1
End If
ElseIf feuille "POSTE1" Or feuille "POSTE2" Or feuille = "POSTE3" Or feuille = "POSTE4" Or feuille = "POSTE5" Or feuille = "POSTE6" Then
If lastligne = 9 Then
lastligne = lastligne + 2
Else
lastligne = lastligne + 1
End If
ElseIf feuille = "DETAIL" Then
lastligne = lastligne + 1
End If
Return lastligne
End Function
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 17 janv. 2012 à 11:13
je ne vois alors pas pourquoi cela ne marcherait pas. Encore que tu devrais typer ta fonction (elle ne l'est pas) et retourne donc un Variant !
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient