OVH Cloud OVH Cloud

Optimisation de code VB

2 réponses
Avatar
Sikaar
Bonjour,
Pourriez vous m'indiquer commetn ecrire une macro de type
nbmax = (nombre de cellules pleines d'une colonne)

Est il ensuite possible d'allouer dynamiquement les valeurs de cellules a
des variables ?

au lieu de

F1 = Sheets("data").Cells(3, j)
F2 = Sheets("data").Cells(4, j)
F3 = Sheets("data").Cells(5, j)
F4 = Sheets("data").Cells(6, j)
F5 = Sheets("data").Cells(7, j)
...

je voudrais qqch de type

For n=0 to nbmax
F(n) = Sheets("data").Cells(n+2, j)

A moins que vous n'ayez une encore meilleure solution ... sachant qu'au
final je veux
créer un boite de dialogue avec des choix et donc je fais :

ArrChoix = Array("", F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13,
F14, F15, F16, F16, F17, F18, F19, F20, F21, F22, F23, F24, F25, F26, F27,
F28, F29, F30, F31, F32, F33, F34, F35, F36, F37, F38, F39, "Retour")

2 réponses

Avatar
michdenis
Bonjour Sikaar,

Essaie ceci :

Adapte le nom de la feuille et l'adresse de la colonne ...

'---------------------------
Sub test()

Dim Tblo As Variant
Dim NbCelluleNonVidesColonneA As Long

With Worksheets("Feuil1") 'Nom Feuille à adapter
Tblo = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
NbCelluleNonVidesColonneA = Application.CountA(Tblo)

End Sub
'---------------------------


Salutations!




"Sikaar" a écrit dans le message de news:
Bonjour,
Pourriez vous m'indiquer commetn ecrire une macro de type
nbmax = (nombre de cellules pleines d'une colonne)

Est il ensuite possible d'allouer dynamiquement les valeurs de cellules a
des variables ?

au lieu de

F1 = Sheets("data").Cells(3, j)
F2 = Sheets("data").Cells(4, j)
F3 = Sheets("data").Cells(5, j)
F4 = Sheets("data").Cells(6, j)
F5 = Sheets("data").Cells(7, j)
...

je voudrais qqch de type

For n=0 to nbmax
F(n) = Sheets("data").Cells(n+2, j)

A moins que vous n'ayez une encore meilleure solution ... sachant qu'au
final je veux
créer un boite de dialogue avec des choix et donc je fais :

ArrChoix = Array("", F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13,
F14, F15, F16, F16, F17, F18, F19, F20, F21, F22, F23, F24, F25, F26, F27,
F28, F29, F30, F31, F32, F33, F34, F35, F36, F37, F38, F39, "Retour")
Avatar
Youky
Salut
avec un bouton et un combobox en feuil1
sert toi apres de la variable n

Private Sub ComboBox1_Click()
If ComboBox1.ListIndex = 39 Then Exit Sub 'retour
n = ComboBox1.ListIndex + 1 'n donne le N° d'index
truc = Sheets("data").Cells(n + 2, j)
End Sub

Private Sub CommandButton1_Click()
ComboBox1.Clear
nbmax = Application.WorksheetFunction.CountA(Range("A:A"))
For k = 1 To nbmax
ComboBox1.AddItem "F" & k
Next
ComboBox1.AddItem "Retour"
End Sub
youky
"Sikaar" a écrit dans le message de news:

Bonjour,
Pourriez vous m'indiquer commetn ecrire une macro de type
nbmax = (nombre de cellules pleines d'une colonne)

Est il ensuite possible d'allouer dynamiquement les valeurs de cellules a
des variables ?

au lieu de

F1 = Sheets("data").Cells(3, j)
F2 = Sheets("data").Cells(4, j)
F3 = Sheets("data").Cells(5, j)
F4 = Sheets("data").Cells(6, j)
F5 = Sheets("data").Cells(7, j)
...

je voudrais qqch de type

For n=0 to nbmax
F(n) = Sheets("data").Cells(n+2, j)

A moins que vous n'ayez une encore meilleure solution ... sachant qu'au
final je veux
créer un boite de dialogue avec des choix et donc je fais :

ArrChoix = Array("", F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,
F13,
F14, F15, F16, F16, F17, F18, F19, F20, F21, F22, F23, F24, F25, F26, F27,
F28, F29, F30, F31, F32, F33, F34, F35, F36, F37, F38, F39, "Retour")