Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

probleme de redim preserve

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

WILFRIED

XLDnaute Impliqué
Bonjour a tous et toutes,

après une recherche sur le forum concernant les variables de types tableaux dynamiques je pensait avoir réussit ma macro mais voila 1° utilisation :
avec une seul occurrence RAS,
2° utilisation , 2 occurrence là un message d'erreur :

erreur d'execution : '9'
l'indice n'appartient pas à la selection.

J'ai beau chercher dans tous les sens je ne vois pas où est mon erreur..😕

Si quellequ'un la voit..

Voici mon code :

Sub find_contact()
' Stop
Dim tab_contact() As Variant
fls_contact.Select
nb_sm_fiche = 0
For Each m_cell In rng_contact
' Stop
If Cbx_nm_contact.Value <> "tous" Then
If m_cell.Value = Cbx_nm_contact.Value Then
ReDim Preserve tab_contact(nb_sm_fiche, 22) 'As Variant
For i = 0 To 22
tab_contact(nb_sm_fiche, i) = m_cell.Offset(0, i - 3).Value
Next i
nb_sm_fiche = nb_sm_fiche + 1
End If
Else

End If
Next m_cell
Stop
Txt_nb_fiche.Text = nb_sm_fiche
'affichage du resultat
If nb_sm_fiche > 1 Then
SpinButton1.Visible = True
Else
SpinButton1.Visible = False
End If
For indic_tab_r = 0 To nb_sm_fiche - 1
For indic_tab_c = 0 To 11
Select Case indic_tab_c
Case 0
txt_code.Text = tab_contact(indic_tab_r, indic_tab_c)
Case 1
txt_dte.Text = tab_contact(indic_tab_r, indic_tab_c)
Case 2
txt_ref1.Text = tab_contact(indic_tab_r, indic_tab_c)
Case 3
Txt_nm.Text = tab_contact(indic_tab_r, indic_tab_c)
Case 4
Txt_ref2.Text = tab_contact(indic_tab_r, indic_tab_c)
Case 5
txt_ref3.Text = tab_contact(indic_tab_r, indic_tab_c)
Case 6
txt_ref4.Text = tab_contact(indic_tab_r, indic_tab_c)
Case 7
txt_ref5.Text = tab_contact(indic_tab_r, indic_tab_c)
Case 8
txt_ref6.Text = tab_contact(indic_tab_r, indic_tab_c)
Case 9
txt_ref7.Text = tab_contact(indic_tab_r, indic_tab_c)
Case 10
txt_ref8.Text = tab_contact(indic_tab_r, indic_tab_c)
Case 11
txt_ref9.Text = tab_contact(indic_tab_r, indic_tab_c)
Case Else

End Select
Next indic_tab_c
Next indic_tab_r
End Sub

indic_tab_c, indic_tab_r, nb_sm_fiche, sont déclarer en public sur un autre module.

Merci d'avance.
 
Re : probleme de redim preserve

Bonjour Wilfried

A priori l'élément "Preserve" de l'instruction "Redim" ne peut redimensionner que la dernière dimension, et dans ton code, je crois voir que tu cherches à redimensionner la 1ère, d'ou à mon avis ce message d'erreur...

Code:
ReDim Preserve tab_contact([COLOR="Red"][B]nb_sm_fiche[/B][/COLOR], 22)

si c'est bien cette ligne qui est en cause...

sinon reviens avec un peu plus de précision, voir un fichier permettant de tester...

bon après midi
@+
 
Re : probleme de redim preserve

Bon en continuant à creusé j'ai trouver une solution même si je ne comprend pas pourquoi :

j'ai inversé le sens de mon tableau :

j'avait un nombre de ligne variable et un nombre de colonne constante :
tab(nb_sm_fiche,22)

j'ai maintenant
tab(22,nb_sm_fiche) et cela fonctionne...😕

A+
 
Re : probleme de redim preserve

Salut pierrot93,pierrejean,

effectivement la ligne qui posait problème était bien redim preserve....

J'ai oublier les rafraichissement d'écran donc je n'avait pas vu les réponses.

mais bon avec l'inversion de l'ordre colonne/ligne ça marche tiptop.

EN tout cas merci à vous de vous être penché sur mon problème...

A+
 
Re : probleme de redim preserve

Bonjour à tous,

un extrait de l'aide VBA sur l'instruction ReDim :

Code:
Si vous utilisez le mot clé [B]Preserve[/B], vous ne pouvez redimensionner 
que la dernière dimension du tableau. Vous ne pouvez en aucun cas 
modifier le nombre de dimensions. Par exemple, si votre tableau n'a 
qu'une dimension, vous pouvez la modifier puisqu'il s'agit de la dernière 
et seule dimension. Toutefois, si le tableau compte plusieurs dimensions, 
seule la taille de la dernière dimension est modifiable si vous souhaitez 
préserver le contenu du tableau. L'exemple suivant montre comment 
augmenter la taille de la dernière dimension d'un tableau dynamique 
sans effacer les données qu'il contient :
ReDim X(10, 10, 10)
ReDim Preserve X(10, 10, 15)
De même, le mot clé [B]Preserve[/B] ne permet de redimensionner un tableau 
qu'en modifiant la limite supérieure ; toute modification de la limite inférieure 
provoque une erreur.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
528
Réponses
3
Affichages
149
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
206
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…