bonjour les spécialistes,
j'ai un problème avec la dernière ligne du code suivant qui me
retourne "Indice en dehors de la plage".(...présence de galettes
nauséabondes sur celle-ci peut-être...?
Si je n'indique pas "Preserve", le code fonctionne, mais vide le
tableau, bien évidemment. J'ajoute que "n" a toujours une valeur
valide et que la macro se déroule parfaitement jusqu'à "Redim..".
Merci d'avance pour vos lumières.
Sub machin()
n = Selection.Count
ReDim Tableau(n, 2)
n = 1
For Each Ccell In Selection
'*************** traitement ********************
'
'n prend une nouvelle valeur < à Selection.Count
Next
ReDim Preserve Tableau(n, 2)
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel.M
Salut long-drink,
Tu ne peux que redimensionner la DERNIÈRE dimension d'un tableau à plusieurs dimensions.
Étapes: Avoir un Tableau(2,n) Tu redimensionne Preserve n à la fin. Puis tu transpose ton tableau(2,n) ==> tableau(n,2) par l'instruction Application.Transpose(Tableau)
Salutations,
Daniel M.
"long-drink" wrote in message news:
bonjour les spécialistes, j'ai un problème avec la dernière ligne du code suivant qui me retourne "Indice en dehors de la plage".(...présence de galettes nauséabondes sur celle-ci peut-être...? Si je n'indique pas "Preserve", le code fonctionne, mais vide le tableau, bien évidemment. J'ajoute que "n" a toujours une valeur valide et que la macro se déroule parfaitement jusqu'à "Redim..".
Merci d'avance pour vos lumières.
Sub machin() n = Selection.Count ReDim Tableau(n, 2) n = 1
For Each Ccell In Selection '*************** traitement ******************** ' 'n prend une nouvelle valeur < à Selection.Count Next ReDim Preserve Tableau(n, 2) End Sub
Salut long-drink,
Tu ne peux que redimensionner la DERNIÈRE dimension d'un tableau à plusieurs
dimensions.
Étapes:
Avoir un Tableau(2,n)
Tu redimensionne Preserve n à la fin.
Puis tu transpose ton tableau(2,n) ==> tableau(n,2) par l'instruction
Application.Transpose(Tableau)
Salutations,
Daniel M.
"long-drink" <r-bruno@wanadoo.fr> wrote in message
news:753fabc8.0309160210.30ed6e0b@posting.google.com...
bonjour les spécialistes,
j'ai un problème avec la dernière ligne du code suivant qui me
retourne "Indice en dehors de la plage".(...présence de galettes
nauséabondes sur celle-ci peut-être...?
Si je n'indique pas "Preserve", le code fonctionne, mais vide le
tableau, bien évidemment. J'ajoute que "n" a toujours une valeur
valide et que la macro se déroule parfaitement jusqu'à "Redim..".
Merci d'avance pour vos lumières.
Sub machin()
n = Selection.Count
ReDim Tableau(n, 2)
n = 1
For Each Ccell In Selection
'*************** traitement ********************
'
'n prend une nouvelle valeur < à Selection.Count
Next
ReDim Preserve Tableau(n, 2)
End Sub
Tu ne peux que redimensionner la DERNIÈRE dimension d'un tableau à plusieurs dimensions.
Étapes: Avoir un Tableau(2,n) Tu redimensionne Preserve n à la fin. Puis tu transpose ton tableau(2,n) ==> tableau(n,2) par l'instruction Application.Transpose(Tableau)
Salutations,
Daniel M.
"long-drink" wrote in message news:
bonjour les spécialistes, j'ai un problème avec la dernière ligne du code suivant qui me retourne "Indice en dehors de la plage".(...présence de galettes nauséabondes sur celle-ci peut-être...? Si je n'indique pas "Preserve", le code fonctionne, mais vide le tableau, bien évidemment. J'ajoute que "n" a toujours une valeur valide et que la macro se déroule parfaitement jusqu'à "Redim..".
Merci d'avance pour vos lumières.
Sub machin() n = Selection.Count ReDim Tableau(n, 2) n = 1
For Each Ccell In Selection '*************** traitement ******************** ' 'n prend une nouvelle valeur < à Selection.Count Next ReDim Preserve Tableau(n, 2) End Sub
Daniel.M
Hello,
j'ai essayé ta solution, mais il se pose un problème de syntaxe (priez pour nous !). Transpose n'est disponible que sous "WorksheetFunction.Transpose", mais ensuite ça coince !
Publie le code qui coince sinon, je peux pas t'aider.
Salutations,
Daniel M.
Hello,
j'ai essayé ta solution, mais il se pose un problème de syntaxe (priez
pour nous !). Transpose n'est disponible que sous
"WorksheetFunction.Transpose", mais ensuite ça coince !
Publie le code qui coince sinon, je peux pas t'aider.
j'ai essayé ta solution, mais il se pose un problème de syntaxe (priez pour nous !). Transpose n'est disponible que sous "WorksheetFunction.Transpose", mais ensuite ça coince !
Publie le code qui coince sinon, je peux pas t'aider.
Salutations,
Daniel M.
Daniel.M
Salut,
J'obtiens les mêmes résultats avec la méthode préconisée. Ainsi:
Function nCl2(Plage As Range) As Variant Dim Cellule As Range, n As Long, j As Long Dim T() As Variant
ReDim T(2, Plage.Cells.Count)
n = 1 For Each Cellule In Plage If IsNumeric(Cellule) Then T(1, n) = Cellule For j = 1 To n If Cellule = T(1, j) Then T(2, j) = T(2, j) + 1 If T(2, j) > 1 Then n = n - 1: Exit For End If End If If Not IsNumeric(T(1, j)) Then n = n - 1 End If Next n = n + 1 End If Next
n = n - 1 ReDim Preserve T(2, n) nCl2 = Application.Transpose(T)
End Function
Salutations,
Daniel M.
Salut,
J'obtiens les mêmes résultats avec la méthode préconisée.
Ainsi:
Function nCl2(Plage As Range) As Variant
Dim Cellule As Range, n As Long, j As Long
Dim T() As Variant
ReDim T(2, Plage.Cells.Count)
n = 1
For Each Cellule In Plage
If IsNumeric(Cellule) Then
T(1, n) = Cellule
For j = 1 To n
If Cellule = T(1, j) Then
T(2, j) = T(2, j) + 1
If T(2, j) > 1 Then
n = n - 1: Exit For
End If
End If
If Not IsNumeric(T(1, j)) Then
n = n - 1
End If
Next
n = n + 1
End If
Next
n = n - 1
ReDim Preserve T(2, n)
nCl2 = Application.Transpose(T)
J'obtiens les mêmes résultats avec la méthode préconisée. Ainsi:
Function nCl2(Plage As Range) As Variant Dim Cellule As Range, n As Long, j As Long Dim T() As Variant
ReDim T(2, Plage.Cells.Count)
n = 1 For Each Cellule In Plage If IsNumeric(Cellule) Then T(1, n) = Cellule For j = 1 To n If Cellule = T(1, j) Then T(2, j) = T(2, j) + 1 If T(2, j) > 1 Then n = n - 1: Exit For End If End If If Not IsNumeric(T(1, j)) Then n = n - 1 End If Next n = n + 1 End If Next
n = n - 1 ReDim Preserve T(2, n) nCl2 = Application.Transpose(T)