Excel - Le jeudi 10 Mai 2012 ?

Asked By poiuytreza53 on 11-May-12 08:48 AM
Le jeudi 10 Mai 2012 ? 17:52 par dolph :
Merci d'upper ton fichier quelquepart que nous puissions t'aider, et de nous
fournir le lien une fois cela fait :)


Gloops replied to poiuytreza53 on 11-May-12 10:30 AM
poiuytreza53 a =E9crit, le 11/05/2012 14:48 :
je peux
nous

Bonjour,

A supposer que "quelquepart" ne soit pas une r=E9ponse satisfaisante =E0 =
site o=F9 je peux l'envoyer", on peut proposer

http://www.cjoint.com/

et de mani=E8re g=E9n=E9rale ce que r=E9pondent les moteurs de recherche =
=E0=20
francois.pardong replied to Gloops on 11-Jul-12 12:22 PM
Bonsoir =E0 tous,

C'est avec beaucoup beaucoup de jours de retard que je reviens vers vous.
En esp=E9rant que mon cas vous int=E9resse encore !

Le fichier est disponible sous le lien suivant : http://cjoint.com/?0GlsvDR=
B1n5

Je vous remercie d'avance pour votre aide.

Bonne soir=E9e
Gloops replied to francois.pardong on 14-Jul-12 12:36 PM
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
Gloops replied to Gloops on 14-Jul-12 12:48 PM
Gloops a =E9crit, le 14/07/2012 18:36 :

Tu noteras que je suis r=E9actif mi-juillet ... Comme =E7a fait des ann=E9=
es=20
que =E7a dure, =E0 force il y a des vis qui se desserrent ...

Si la zone d=E9marre bien en C4 comme je le disais plus haut, =E7a nous f=
ait :

Set Donnees =3D WS.Range(WS.Cells(4, 3), WS.Cells(99, 41))

sachant que Cells admet comme premier argument son num=E9ro de ligne,=20
comme deuxi=E8me argument son num=E9ro de colonne. J'ai trouv=E9 41 par 2=
6 +=20
15, puisque O est la 15=E8me lettre de l'alphabet.

Pour en avoir vraiment le coeur net, juste apr=E8s la ligne ci-dessus tu =

peux mettre :

Debug.Print Donnees.Address

et regarder ce que =E7a donne dans la fen=EAtre d'ex=E9cution.
Il est possible aussi de taper Donnees.Select
et de voir ce qui est s=E9lectionn=E9.
francois.pardong replied to Gloops on 23-Jul-12 05:15 AM
Bonjour Gloops !

Merci pour ta r=E9ponse !
J'ai ajouter la ligne suivante :
W.Cells(LigneCible, 6) =3D WS.Cells(C.Row, C.Column)  'Donn=E9e variable
en dessous de la ligne 'R=E9f.Client, ce qui me donne la donn=E9e variable =
du tableau.
Mais par contre, Je ne sais pas comment je pourrais faire pour int=E9grer l=
e fait que si la cellule cible 6 est vide que la macro saute =E0 la prochai=
ne colonne.
Si ce n'est pas possible, ce n'est pas grave, je ferai un tri sur le tablea=
u r=E9sultat.
Un grand merci pour ton aide!