titeuf136
Messages postés91Date d'inscriptionvendredi 15 janvier 2010StatutMembreDernière intervention19 octobre 2012
-
22 avril 2010 à 17:15
titeuf136
Messages postés91Date d'inscriptionvendredi 15 janvier 2010StatutMembreDernière intervention19 octobre 2012
-
23 avril 2010 à 12:30
Bonjour,
je souhaite exécuter la procédure suivante.
Le problème est que je ne parviens pas à réinitialiser les variables, ainsi,lorsque je reboucle sur "m" le contenu de "tboextract60" n'est pas réinitialisé. Comment faire ?
merci
sub essai ()
Application.ScreenUpdating = False
Dim tboextract60 As Variant
Dim Unseul60 As New Collection
Dim strElt60 As Variant
Dim i
Dim j
j = 2
k = 0
for m = 1 to 10
For n = 2 To 200
If Cells(n, m) <> "" Then
suite= suite & Cells(n, m) & ";"
End If
Next n
tboextract60 = Split(suite, ";")
On Error Resume Next
For i = 0 To UBound(tboextract60)
Unseul60.Add tboextract60(i), tboextract60(i)
Next i
For Each strElt60 In Unseul60
j = j + 1
Cells(k, j) = strElt60
Next
On Error GoTo 0
k=k+1
next m
Application.ScreenUpdating = True
End Sub
A voir également:
Problème de mise à zéro de variables dans une boucle
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 22 avril 2010 à 20:02
Salut
Pas clair.
"lorsque je reboucle sur "m" le contenu de "tboextract60" n'est pas réinitialisé"
Pourquoi voudrais-tu qu'il soit réinitialisé ? Quelle instruction as-tu utilisé pour le faire ?
Je n'en vois pas.
tboextract60 est un tableau (1) issu de ta variable suite.
suite n'est pas dimensionnée (détail).
Si tu veux que cette variable soit vide quand tu commences une itération, il te suffit de la vider - Lapalisse (1470-1525)
Ceci, placé après le For m, devrait suffire :
suite = ""
(1) de String, pas de Variant, quelle horreur ces Variant
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
je souhaite afficher dans les colonnes m+5
1) lundi;mardi;jeudi
2) mercredi;vendredi
3 lundi;samedi;dimanche
l'execution du code ci-dessous fonctionne pour une colonne. Lorsque je reboucle sur les colonnes suivantes j'obtiens
1) lundi;mardi;jeudi
2) lundi;mardi;jeudi; ;mercredi;vendredi
3 lundi;mardi;jeudi; ;mercredi;vendredi; ;samedi;dimanche
Sub essai()
Application.ScreenUpdating = False
Dim tboextract60 As Variant
Dim Unseul60 As New Collection
Dim strElt60 As Variant
Dim i
Dim j
For m = 1 To 3
j = 0
suite = ""
For n = 1 To 10
If Cells(n, m) <> "" Then
suite = suite & Cells(n, m) & ";"
End If
Next n
tboextract60 = Split(suite, ";")
On Error Resume Next
For i = 0 To UBound(tboextract60)
Unseul60.Add tboextract60(i), tboextract60(i)
Next i
For Each strElt60 In Unseul60
j = j + 1
Cells(j, m + 5) = strElt60
Next
On Error GoTo 0
Next m
Application.ScreenUpdating = True
End Sub