francois.pardonge@gmail.com a =E9crit, le 11/07/2012 18:22 :
s.
svDRB1n5
Bon alors =E0 ce que je comprends, tu veux faire une extraction de toutes=
=20
les commandes, avec produit, client, quantit=E9 command=E9e ? En ne trait=
ant=20
pas les cellules vides j'imagine ?
Je verrais bien donner un nom =E0 la zone des donn=E9es, qui va de C4 =E0=
=20
AO98. A d=E9faut je l'ai s=E9lectionn=E9e dans une variable plage.
Apr=E8s, en supposant que je ne sois pas pass=E9 =E0 c=F4t=E9 de quelque =
chose=20
d'existant, ce qui serait bien possible, on pourrait tenter quelque=20
chose de ce style, qu'il reste =E0 mijoter (je n'ai Excel qu'au bureau,=20
donc je le balance brut de pomme) :
Dim Donnees As Range
Dim C As Range 'cellule
Dim W As Worksheet ' feuille cible
Dim WS As Worksheet ' feuille source
Dim LigneCible As Integer 'v=E9rifier le nombre de cellules =E0 traiter
' pour voir si =E7a ne d=E9passe pas la capacit=E9
' du type de donn=E9es
Set W =3D ThisWorkbook.Worksheets("R=E9sultat =E0 Obtenir")
Set WS =3D ThisWorkbook.Worksheets("Base 3d")
Set Donnees =3D WS.Range(WS.Cells(4, 2), WS.Cells(99, 41))
' mais on aurait pu avoir un nom, auquel cas :
' Set Donnees =3D ThisWorkbook.Names("Donnees").RefersToRange
' Largement plus facile =E0 mettre =E0 jour avec l'interface utilisateur.=
LigneCible =3D 1
For Each C in Donnees
If Not IsNull(C) Then
W.Cells(LigneCible, 1) =3D WS.Cells(C.Row, 1) 'Code produit
W.Cells(LigneCible, 2) =3D WS.Cells(C.Row, 2) 'Produit
W.Cells(LigneCible, 3) =3D WS.Cells(1, C.Column) 'Client
W.Cells(LigneCible, 4) =3D WS.Cells(2, C.Column) 'Code client
W.Cells(LigneCible, 5) =3D WS.Cells(3, C.Column) 'R=E9f. client
LigneCible =3D LigneCible + 1
End IF
Next