[VBA] Erreur transfert tableau() vers feuille
Shaar
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'essaye de transférer le contenu d'une variable sur plage Excel.
Voici mon code :
Mon tableau contient bien les valeurs que je souhaite mais lors que j'essaye de le mettre sur la feuille Excel, je n'obtient que la 1ère valeur de mon tableau. J'ai réduit la taille de la plage selectionné car sinon elle contenait une valeur en trop (le tableau initiant à 0). Néanmoins, cela ne me change rien.
Merci de votre aide
J'essaye de transférer le contenu d'une variable sur plage Excel.
Voici mon code :
Sub totot()
Dim tableau() As Variant
Set ws1= Worksheets("ws1")
Set ws2= Worksheets("ws2")
i = 1
dernligne = 100
Var = 1
j = 1
While ws1.Cells(i, 1) <> ""
ReDim Preserve tableau(i - 1) As Variant
' on parcours les données en gardant en mémoire ce qui a été parcouru
If ws1.Cells(i, 9) > ws2.Cells(Var, 4) Then
Var = Var + 1
Else
If ws1.Cells(i, 9) >= ws2.Cells(Var, 3) Then
tableau(i - 1) = ws2.Cells(Var, 1)
End If
End If
i = i + 1
Wend
Range(Cells(1, 12), Cells(i - 1, 12)).Select
Selection = tableau
End Sub
Mon tableau contient bien les valeurs que je souhaite mais lors que j'essaye de le mettre sur la feuille Excel, je n'obtient que la 1ère valeur de mon tableau. J'ai réduit la taille de la plage selectionné car sinon elle contenait une valeur en trop (le tableau initiant à 0). Néanmoins, cela ne me change rien.
Merci de votre aide
A voir également:
- [VBA] Erreur transfert tableau() vers feuille
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Imprimer un tableau excel - Guide
- Vinted transfert vers compte bancaire - Guide
3 réponses
Bonjour
Range(Cells(1, 12), Cells(i - 1, 12))=application.transpose(tableau)
ou
cells(i,12).resize(i-1,12)=application.transpose(tableau)
(mais tu pouvais te passer du passage en redim préserve)
A quoi sert "var" ?
les select-selection sont à eviter en VBA
Range(Cells(1, 12), Cells(i - 1, 12))=application.transpose(tableau)
ou
cells(i,12).resize(i-1,12)=application.transpose(tableau)
(mais tu pouvais te passer du passage en redim préserve)
A quoi sert "var" ?
les select-selection sont à eviter en VBA
Merci du retour,
Le problème de l'utilisation du transpose classique est que j'ai plus de 65 000 valeur.
Je ne suis pas fan du select / selection mais je fais ça quand je suis en mode debug.
Le vari était une recherche non pertinente que je n'ai pas supprimé dans mon code.
Le problème de l'utilisation du transpose classique est que j'ai plus de 65 000 valeur.
Je ne suis pas fan du select / selection mais je fais ça quand je suis en mode debug.
Le vari était une recherche non pertinente que je n'ai pas supprimé dans mon code.
Effectivement au dela de 65536, transpose ne fonctionne plus
ci dessous une étude-test d'utilisation de variable tableau avec 65537 lignes
le tableau doit ^tre à 2 dimensions 1 to lig, 1 to1
tu n'as pas besoin d'utiliser un redim preserve car pour les lignes non admises par le if restitueront du vide ou alors tu fais ce redim preserve juste avant la restitution si il a des cellules occupées en dessous
mais utiliser un parcours de cellules ligne par ligne sur 66000 lig env. est chronophage: peut-etre passer par des variables tableaux...
ci dessous une étude-test d'utilisation de variable tableau avec 65537 lignes
le tableau doit ^tre à 2 dimensions 1 to lig, 1 to1
Sub tablo2()
Dim Lig As Long, T_prep2, Cptr As Long
Columns("A").Clear
Lig = 65537
ReDim T_prep2(1 To Lig, 1 To 1)
For Cptr = 1 To Lig
T_prep2(Cptr, 1) = "aze" & Cptr
Next
Range("A1").Resize(Lig, 1) = T_prep2
End Sub
tu n'as pas besoin d'utiliser un redim preserve car pour les lignes non admises par le if restitueront du vide ou alors tu fais ce redim preserve juste avant la restitution si il a des cellules occupées en dessous
mais utiliser un parcours de cellules ligne par ligne sur 66000 lig env. est chronophage: peut-etre passer par des variables tableaux...