Déclarer un variable

Bonjour,

Ma question est toute bête et le pire c'est que j'ai déjà réussi à le faire dans ma macro, mais je ne sais plus comment j'ai fait. je voudrais remplacer dans ce code:

 If tblodep(i, 1) >= 20 And tblodep(i, 1) <= 40 Then

les chiffres par une variable que je récupère dans une textbox j 'ai essayé:

dim p1 as long
p1 = textbox1.value

ensuite j'ai remplacé un chiffre par p1 mais cela ne marche pas je n'arrive plus à le faire, alors qu'avant j'y arrivai voici le code:

Option Explicit
Option Base 1
Dim i As Long, j As Long, lignearr As Long, lignearr2 As Long, lignearr3 As Long, lignearr4 As Long, der_ligne As Long
Dim ShtNom As String
Dim Sht As Worksheet
Dim tblodep(), tbloarr(), tbloarr2(), tbloarr3(), tbloarr4()

Private Sub ListBox1_Click()
      ShtNom = ListBox1.Value: ActiveWorkbook.Worksheets(ShtNom).Activate
      With ActiveSheet
            ' copie des données dans array
            der_ligne = .Range("B" & Rows.Count).End(xlUp).Row
            ReDim tblodep(der_ligne, 6): ReDim tbloarr(der_ligne, 6): ReDim tbloarr2(der_ligne, 6): ReDim tbloarr3(der_ligne, 6): ReDim tbloarr4(der_ligne, 6)
            tblodep() = .Range("A1:F" & der_ligne).Value
            ' boucle sur les données du tableau   -   i = ligne soit ligne  -   j = colonne
            lignearr = 1: lignearr2 = 1: lignearr3 = 1: lignearr4 = 1
            For i = LBound(tblodep, 1) To UBound(tblodep, 1)
                  If tblodep(i, 1) >= 20 And tblodep(i, 1) <= 40 Then
                        tbloarr(lignearr, 1) = tblodep(i, 1): tbloarr(lignearr, 2) = tblodep(i, 2): tbloarr(lignearr, 3) = tblodep(i, 3): tbloarr(lignearr, 4) = tblodep(i, 4): tbloarr(lignearr, 5) = tblodep(i, 5): tbloarr(lignearr, 6) = tblodep(i, 6)
                        lignearr = lignearr + 1
                        tbloarr(lignearr, 1) = tblodep(i + 1, 1): tbloarr(lignearr, 2) = tblodep(i + 1, 2): tbloarr(lignearr, 3) = tblodep(i + 1, 3): tbloarr(lignearr, 4) = tblodep(i + 1, 4): tbloarr(lignearr, 5) = tblodep(i + 1, 5)
                        lignearr = lignearr + 1
                  ElseIf tblodep(i, 1) >= 41 And tblodep(i, 1) <= 50 Then
                        tbloarr2(lignearr2, 1) = tblodep(i, 1): tbloarr2(lignearr2, 2) = tblodep(i, 2): tbloarr2(lignearr2, 3) = tblodep(i, 3): tbloarr2(lignearr2, 4) = tblodep(i, 4): tbloarr2(lignearr2, 5) = tblodep(i, 5): tbloarr2(lignearr2, 6) = tblodep(i, 6)
                        lignearr2 = lignearr2 + 1
                        tbloarr2(lignearr2, 1) = tblodep(i + 1, 1): tbloarr2(lignearr2, 2) = tblodep(i + 1, 2): tbloarr2(lignearr2, 3) = tblodep(i + 1, 3): tbloarr2(lignearr2, 4) = tblodep(i + 1, 4): tbloarr2(lignearr2, 5) = tblodep(i + 1, 5)
                        lignearr2 = lignearr2 + 1
                  ElseIf tblodep(i, 1) >= 71 And tblodep(i, 1) <= 80 Then
                        tbloarr3(lignearr3, 1) = tblodep(i, 1): tbloarr3(lignearr3, 2) = tblodep(i, 2): tbloarr3(lignearr3, 3) = tblodep(i, 3): tbloarr3(lignearr3, 4) = tblodep(i, 4): tbloarr3(lignearr3, 5) = tblodep(i, 5): tbloarr3(lignearr3, 6) = tblodep(i, 6)
                        lignearr3 = lignearr3 + 1
                        tbloarr3(lignearr3, 1) = tblodep(i + 1, 1): tbloarr3(lignearr3, 2) = tblodep(i + 1, 2): tbloarr3(lignearr3, 3) = tblodep(i + 1, 3): tbloarr3(lignearr3, 4) = tblodep(i + 1, 4): tbloarr3(lignearr3, 5) = tblodep(i + 1, 5)
                        lignearr3 = lignearr3 + 1
                  ElseIf tblodep(i, 1) >= 10 And tblodep(i, 1) <= 15 Then
                        tbloarr4(lignearr4, 1) = tblodep(i, 1): tbloarr4(lignearr4, 2) = tblodep(i, 2): tbloarr4(lignearr4, 3) = tblodep(i, 3): tbloarr4(lignearr4, 4) = tblodep(i, 4): tbloarr4(lignearr4, 5) = tblodep(i, 5): tbloarr4(lignearr4, 6) = tblodep(i, 6)
                        lignearr4 = lignearr4 + 1
                        tbloarr4(lignearr4, 1) = tblodep(i + 1, 1): tbloarr4(lignearr4, 2) = tblodep(i + 1, 2): tbloarr4(lignearr4, 3) = tblodep(i + 1, 3): tbloarr4(lignearr4, 4) = tblodep(i + 1, 4): tbloarr4(lignearr4, 5) = tblodep(i + 1, 5)
                        lignearr4 = lignearr4 + 1
                  End If
            Next i
      End With
      ' restaure array dans la feuille Accueil
      With Sheets("Accueil")
            .Activate
            der_ligne = .Range("B" & Rows.Count).End(xlUp).Row + 1
            .Cells(der_ligne, 1).Resize(UBound(tbloarr, 1), UBound(tbloarr, 2)).Value = tbloarr
            .Cells(der_ligne, 7).Resize(UBound(tbloarr2, 1), UBound(tbloarr2, 2)).Value = tbloarr2
            .Cells(der_ligne, 13).Resize(UBound(tbloarr3, 1), UBound(tbloarr3, 2)).Value = tbloarr3
            .Cells(der_ligne, 19).Resize(UBound(tbloarr4, 1), UBound(tbloarr4, 2)).Value = tbloarr4
      End With
      MsgBox "Traitement terminé."
      Unload Me
      Application.ScreenUpdating = True
End Sub

Private Sub UserForm_Initialize()
      Application.ScreenUpdating = False
      ' Efface les donnée de la feuille Accueil
      der_ligne = Range("B" & Rows.Count).End(xlUp).Row + 1
      Range("A11:X" & der_ligne).ClearContents
      ' Remplit la ListBox1
      ListBox1.Clear
      For Each Sht In Worksheets
            If Sht.Name <> "Accueil" Then ListBox1.AddItem Sht.Name
      Next
      ListBox1.ListIndex = -1
End Sub

Cordialement

Bob,

Bonsoir,

je me trompe peut-être (nul n'est parfais) mais une valeur TextBox est une valeur alphanumérique "texte" boxe.

Donc dans P1 = TextBox1.value, il faut convertir la Textbox1 en numérique et je crois que CDbl est a utiliser :

P1 = CDbl(TextBox1.value)

@bientôt

LouReeD

exel me dit variable non définie.

je doit me tromper quelque part, mais je ne voie pas ou grrrr

cordialement

bob,

êtes-vous sûr d'avoir une TextBox1 ?

@ bientôt

LouReeD

Oui,

=INCORPORER("Forms.TextBox.1";"")

quand je regarde dans les propriété elle s’appelle bien TextBox1

cordialement,

bob


p1 = Worksheets("Accueil").TextBox1.Value

évidement elle est sur la feuille et non dans l'userform, problème régler.

cordialement,

bob,

Ravis pour vous

@ bientôt

LouReeD

Rechercher des sujets similaires à "declarer variable"