Microsoft 365 redim array ne marche pas

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 !

Bonjour Thenesol,
Avec "Redim Preserve", on ne peut modifier que la dernière dimension. Dans votre cas vous ne pouvez redimensionner que le nombre de colonnes.
Si vous utilisez le mot clé "preserve", vous pouvez redimensionner uniquement la dernière dimension du tableau et que vous ne pouvez pas modifier le nombre de dimensions du tout.
Le plus simple est peut être de transférer les 100 première ligne du tablo1 dans un tablo2.
 
Bonjour
c'est sans compter sur les idées farfelues à la patricktoulon
pour le coup je fait une macro redim_PreserveRow

demonstration
VB:
Sub test()
    Dim Tablo

    Tablo = Range("A1:CV25000").Value

    MsgBox "avant " & vbCrLf & "mon tableau a " & UBound(Tablo) & " lignes et " & UBound(Tablo, 2) & " colonnes "

    Redim_preserveRow Tablo, 1, 100

    MsgBox "apres " & vbCrLf & "mon tableau a " & UBound(Tablo) & " lignes et " & UBound(Tablo, 2) & " colonnes "
End Sub

Sub Redim_preserveRow(ByRef Tablo, minLig, MaxLig)
    Dim L
    L = Evaluate("ROW(" & minLig & ":" & MaxLig & ")")

    Tablo = Application.Index(Tablo, L, 0)
End Sub
 
voila un extrait du code :
Redim_preserveRow
ne conserve que la 1ere colonne


Sub Redim_preserveRow(ByRef Tablo, minLig, MaxLig)
Dim L
L = Evaluate("ROW(" & minLig & ":" & MaxLig & ")")

Tablo = Application.Index(Tablo, L, 0)
End Sub

Sub compare_3()
Dim ncol%, i%, j%, reduclg%, wb1 As Workbook
Dim tablo1, tablotemp As Variant
Dim ws1 As Worksheet
Dim Fichier1 As Variant

reduclg = 100
ncol = 10

Fichier1 = Application.GetOpenFilename("CSV Files (*.CSV), *.csv")
If Fichier1 = False Then MsgBox "Ouvrez '" & Fichier1 & "'...": Exit Sub ' pas de fichier on quitte

On Error Resume Next
Set wb1 = Workbooks.Open(Filename:=Fichier1, Local:=True)
If wb1 Is Nothing Then MsgBox "Ouvrez '" & Fichier1 & "'...": Exit Sub

tablo1 = wb1.Sheets(1).[A1].CurrentRegion.Resize(, ncol) 'matrice, plus rapide

Redim_preserveRow tablo1, 5, 10

End Sub
 
pardon ?
voilà ce que j'obtiens en sortie
à jeun

1700060913486.png
 
Re,
@patrick,
Si l'array en question est strictement interne au VBA et non la copie d'un range, alors je n'ai pas trouvé comment votre fonction peut marcher.
Voir PJ. Je remplit un array 100*4 et je restitue un array 10*4, les deux restitutions sont les mêmes.
Où est le piège ?
 

Pièces jointes

- 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
5
Affichages
780
Réponses
40
Affichages
3 K
Réponses
38
Affichages
892
Retour