XL 2010 Extraire 3 colonnes d'un champ au-delà de 65536 lignes

cp4

XLDnaute Barbatruc
Bonjour:),

En fouinant sur le site de Boisgontier, j'ai trouvé des codes permettant de récupérer des colonnes choisies d'une plage.
Dans mon cas colonnes: 2, 3 et 16.
Cependant, ces codes plantent si la plage contient plus de 65536 lignes.
Comment contourner cette limitation à 65536 lignes.
Avec mes remerciements anticipés.

nb: je répondrai ce soir car très occupé ces derniers jours.
 

Pièces jointes

  • Extraire Col_2_3_16.xlsm
    22.5 KB · Affichages: 54

patricktoulon

XLDnaute Barbatruc
re
tiens j'ai envie de déconner aujourd'hui
version excel "versaintclitorix "

toi qui voulais des split cp4 ben tiens mange en 🤪 🤪 🤪 🤪
VB:
Public Property Get presse_papier_Mac_window()
    With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"): .GetFromClipboard: presse_papier_Mac_window = .GetText(1): End With
End Function

Sub test()
    Range("b1:c" & Rows.Count).Copy: x1 = Split(presse_papier_Mac_window, vbCrLf)
    Range("p1:p" & Rows.Count).Copy: x2 = Split(presse_papier_Mac_window, vbCrLf)
    ReDim tbl(LBound(x1) To UBound(x1), 3)
    For i = LBound(tbl) To UBound(tbl) - 1
        tbl(i, 0) = Split(x1(i), vbTab)(0)
        tbl(i, 1) = Split(x1(i), vbTab)(1)
        tbl(i, 2) = Split(x2(i), vbTab)(0)
    Next
MsgBox tbl(3, 1)
End Sub
 

patricktoulon

XLDnaute Barbatruc
tiens cp4 tu pourais te servir d'union aussi avec une copie temporaire

VB:
Sub testunion()
Application.ScreenUpdating = False
Union(Range("b:c"), Range("p:p")).Copy [r1]
With [r1]: tbl = .CurrentRegion.Value: .CurrentRegion.ClearContents: End With
MsgBox tbl(566, 2)
End Sub

ce qu'il y a de bien avec le copy c'est que ça copie jusque a la dernière ligne utilisée donc on peut mettre une colonne entière ça fera que le strict nécessaire
je précise que j'ai testé dans le clipboard
 

cp4

XLDnaute Barbatruc
Bonjour
Un essai
Bonsoir PierreJean,
Merci pour ta tentative, le code plante dès que le nombre de lignes dépasse 65536.
Capture.JPG

Merci quand même.
Bonne soirée.
 

cp4

XLDnaute Barbatruc
re
tiens j'ai envie de déconner aujourd'hui
version excel "versaintclitorix "

toi qui voulais des split cp4 ben tiens mange en 🤪 🤪 🤪 🤪
VB:
Public Property Get presse_papier_Mac_window()
    With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"): .GetFromClipboard: presse_papier_Mac_window = .GetText(1): End With
End Function

Sub test()
    Range("b1:c" & Rows.Count).Copy: x1 = Split(presse_papier_Mac_window, vbCrLf)
    Range("p1:p" & Rows.Count).Copy: x2 = Split(presse_papier_Mac_window, vbCrLf)
    ReDim tbl(LBound(x1) To UBound(x1), 3)
    For i = LBound(tbl) To UBound(tbl) - 1
        tbl(i, 0) = Split(x1(i), vbTab)(0)
        tbl(i, 1) = Split(x1(i), vbTab)(1)
        tbl(i, 2) = Split(x2(i), vbTab)(0)
    Next
MsgBox tbl(3, 1)
End Sub
Re, rien compris. Sur ce coup, tu es hors sujet. Le split c'était dans l'autre discussion.
Merci.
 

cp4

XLDnaute Barbatruc
tiens cp4 tu pourais te servir d'union aussi avec une copie temporaire

VB:
Sub testunion()
Application.ScreenUpdating = False
Union(Range("b:c"), Range("p:p")).Copy [r1]
With [r1]: tbl = .CurrentRegion.Value: .CurrentRegion.ClearContents: End With
MsgBox tbl(566, 2)
End Sub

ce qu'il y a de bien avec le copy c'est que ça copie jusque a la dernière ligne utilisée donc on peut mettre une colonne entière ça fera que le strict nécessaire
je précise que j'ai testé dans le clipboard
Re, Je n'ai pas ton niveau donc rien compris quant à son utilisation au problème posé.
Merci quand même.
 

cp4

XLDnaute Barbatruc
tu ne sais pas ce qu'est la fonction union ???
Je sais ce qu'est la fonction union. Je ne vois pas comment l'utiliser pour récupérer dans l'array juste les 3 colonnes (en l'occurence 2,3 et 16) lorsque le nombre de lignes de la plage dépasse 65536.

Le résultat sur la feuille c'est juste pour faire joli comme le disait Mapomme (que je salue;)).
Je n'en ai pas besoin. Ce qui m'intéresse c'est le Tableau.

edit: sans feuille intermédiaire.
 

Discussions similaires

Statistiques des forums

Discussions
314 588
Messages
2 110 988
Membres
111 002
dernier inscrit
Lolo73i