Bonjour, merci le code dans mon second onglet qui fonctionne bien pour aller chercher les données comme je le voulais.
J'ai ensuite essayé d'aller chercher pour rappatrier dans mon second onglet une deuxième info dans une seconde matrice de mon premier onglet qui se situe un peu plus loin dans les colonnes de mon premier onglet. Je réussis bien à rapatrier les données mais je voudrais les inscrire dans la colonne qui suit celle ou je rapatrie ma première donnée or elles viennent se coller en dessous des premières en créant de nouvelles lignes,
je dois faire une erreur que je ne retrouve pas
Option Explicit
Private Sub Worksheet_Activate()
Dim tablo1, nlig&, tablo2, tablo3, tablo4, ncol%, ncol2%, j%, i&, n&
With Feuil1 'CodeName de la feuille source
tablo1 = .[A1].CurrentRegion.Resize(, 28) 'matrice, plus rapide
tablo4 = .[A1].CurrentRegion.Resize(, 28)
nlig = UBound(tablo1)
If nlig = 1 Then GoTo 1 'si le tableau est vide
tablo2 = .[AE1].CurrentRegion.Resize(nlig) 'matrice, plus rapide
tablo3 = .[EH1].CurrentRegion.Resize(nlig)
ncol = UBound(tablo2, 2)
End With
'---tableau des résultats---
ReDim resu(1 To ncol * (nlig - 1), 1 To 30)
For j = 1 To ncol
For i = 2 To nlig
If tablo2(i, j) <> "" Then
n = n + 1
resu(n, 1) = tablo2(1, j)
resu(n, 2) = tablo1(i, 1)
resu(n, 3) = tablo1(i, 2)
resu(n, 4) = tablo1(i, 3)
resu(n, 5) = tablo1(i, 4)
resu(n, 6) = tablo1(i, 5)
resu(n, 7) = tablo1(i, 6)
resu(n, 8) = tablo1(i, 7)
resu(n, 9) = tablo1(i, 8)
resu(n, 10) = tablo1(i, 9)
resu(n, 11) = tablo1(i, 10)
resu(n, 12) = tablo1(i, 11)
resu(n, 13) = tablo1(i, 12)
resu(n, 14) = tablo1(i, 13)
resu(n, 15) = tablo1(i, 14)
resu(n, 16) = tablo1(i, 15)
resu(n, 17) = tablo1(i, 16)
resu(n, 18) = tablo1(i, 17)
resu(n, 19) = tablo1(i, 18)
resu(n, 20) = tablo1(i, 19)
resu(n, 21) = tablo1(i, 20)
resu(n, 22) = tablo1(i, 21)
resu(n, 23) = tablo1(i, 22)
resu(n, 24) = tablo1(i, 23)
resu(n, 25) = tablo1(i, 24)
resu(n, 26) = tablo1(i, 25)
resu(n, 27) = tablo1(i, 26)
resu(n, 28) = tablo1(i, 27)
resu(n, 29) = tablo1(i, 28)
resu(n, 30) = tablo2(i, j)
End If
Next i, j
For j = 1 To ncol
For i = 2 To nlig
If tablo3(i, j) <> "" Then
n = n + 1
resu(n, 1) = tablo3(1, j)
resu(n, 2) = tablo4(i, 1)
resu(n, 3) = tablo4(i, 2)
resu(n, 4) = tablo4(i, 3)
resu(n, 5) = tablo4(i, 4)
resu(n, 6) = tablo4(i, 5)
resu(n, 7) = tablo4(i, 6)
resu(n, 8) = tablo4(i, 7)
resu(n, 9) = tablo4(i, 8)
resu(n, 10) = tablo4(i, 9)
resu(n, 11) = tablo4(i, 10)
resu(n, 12) = tablo4(i, 11)
resu(n, 13) = tablo4(i, 12)
resu(n, 14) = tablo4(i, 13)
resu(n, 15) = tablo4(i, 14)
resu(n, 16) = tablo4(i, 15)
resu(n, 17) = tablo4(i, 16)
resu(n, 18) = tablo4(i, 17)
resu(n, 19) = tablo4(i, 18)
resu(n, 20) = tablo4(i, 19)
resu(n, 21) = tablo4(i, 20)
resu(n, 22) = tablo4(i, 21)
resu(n, 23) = tablo4(i, 22)
resu(n, 24) = tablo4(i, 23)
resu(n, 25) = tablo4(i, 24)
resu(n, 26) = tablo4(i, 25)
resu(n, 27) = tablo4(i, 26)
resu(n, 28) = tablo4(i, 27)
resu(n, 29) = tablo4(i, 28)
resu(n, 30) = tablo3(i, j)
End If
Next i, j
'---restitution---
1 If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A2] 'cellule de restitution, à adapter
If n Then
.Resize(n, 30) = resu
.Resize(n, 30).Borders.Weight = xlThin 'bordures
End If
.Offset(n).Resize(Rows.Count - n - .Row + 1, 30).Delete xlUp 'RAZ en dessous
End With
With UsedRange: End With 'actualise la barre de défilement verticale
End Sub