Déclarer un variable
- Messages
- 70
- Excel
- 2016
- Inscrit
- 12/02/2016
- Emploi
- Dessinateur calculateur en bureau d'étude.
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 Thenles chiffres par une variable que je récupère dans une textbox j 'ai essayé:
dim p1 as long
p1 = textbox1.valueensuite 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 SubCordialement
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
- Messages
- 70
- Excel
- 2016
- Inscrit
- 12/02/2016
- Emploi
- Dessinateur calculateur en bureau d'étude.
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
- Messages
- 70
- Excel
- 2016
- Inscrit
- 12/02/2016
- Emploi
- Dessinateur calculateur en bureau d'étude.
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