OVH Cloud OVH Cloud

chris a pris la garde...

12 réponses
Avatar
sabatier
....alors j'y vais de ma question mais auparavant un grand bonjour à tout le
monde (y a si longtemps que je n'étais venu)
imaginons une facture :
en D9 une ligne adresse constituée du code postal suivi de la ville ( ex.
69380 Chatillon ou 01000 Bourg)
en G2 une tranche de poids (ex. 9, 19, 29, 39)
dans un autre classeur, un tableau avec :
en ordonnés, les n° des départements de 01 à 95 à partir de la cellule A2
(leur nom figurant à partir de B2)
en abcisses, les tranches 9, 19, 29, 39, etc à partir de la cellule C1 vers
G1 ou plus
des prix enfin, dans les colonnes à partir de C2 vers G2 pour le département
01, C3 vers G3 pour le département 02 et ainsi de suite jusqu'en regard du
dernier département...
ma question : comment en VBA aller chercher le prix correspondant aux infos
en D9 et G2 de la facture dans le classeur à l'intersection, donc, de la
ligne "départements" et de la colonne "tranches", sachant qu'il ne faudra
prendre en compte que les 2 premiers chiffres du code postal, bien sûr...
dois-je ajouter que cela fait trois ans et demi que je suis là-dessus et que
c'est vraiment contraint et forcé que je lance ce mayday....
merci pour votre intérêt qui, dans cette histoire, est terriblement moins
important que le mien...
à +
jps

2 réponses

1 2
Avatar
sabatier
salut françois-xavier
je m'empresse de mettre ta réponse sur disquette pour la tester in my
office...
juste un mot auparavant : tu as mis en observation :

'col +2 = colonne comprenant les prix
'note : +2 pour débuter en colonne C

est-ce à dire qu'il faut que j'ajoute +2 en bout de la ligne suivante (comme
tu as ajouté +1 à celle définissant la "lig" ?

col = Application.WorksheetFunction.Match(PL, .Range("C1:H1"), 0)

je vais faire les essais, oeuf corse, en croisant les doigts pour que la
WorksheetFunction Match soit bien connue de XL 97 (c'est Split, je crois,
qui ne l'est pas)

je suis bien sûr que tout cela va baigner dans l'huile dont je pourrais me
resservir pour t'y faire revenir quelque andouillette lors de ton prochain
passage dans le quartier...
merci encore françois-xavier and see you soon
jps

"FxM" a écrit dans le message de
news:eqJ$
re-

En premiere approche, ca pourrait donner des choses comme :

Sub test()

' feuille de facture
With Sheets("BL")

'département
CP = Left(.Range("D9"), 2)
'plage de poids
PL = .Range("G2")
End With

'ouvrir le fichier autre
Workbooks.Open ("D:inboxtransport_001.xls")

'dont on suppose que la feuille se nomme ...
With Sheets("Prix")

'lig +1 = ligne comprenant le département
'note : +1 pour débuter en ligne2
lig = Application.Match(CP, .Range("A2:A96"), 0) +1

'col +2 = colonne comprenant les prix
'note : +2 pour débuter en colonne C
col = Application.WorksheetFunction.Match(PL, .Range("C1:H1"), 0)

'extraction du prix souhaité
prix = .Cells(lig , col )

End With

'fermer les prix sans sauver
ActiveWorkbook.Close False

'noter le prix dans la case qui va bien
'attention au nom de feuille
Sheets("BL").Range("A1").Value = prix
End Sub

Attention ! Il faut que les départements soient bien 01 au format texte
et non 1 avec une mise en forme. Dans le second cas, remplacer
lig = Application.Match(CP, .Range("A2:A96"), 0) +1
par
lig = cp*1 +1

@+
FxM


.....alors j'y vais de ma question mais auparavant un grand bonjour à
tout le
monde (y a si longtemps que je n'étais venu)
imaginons une facture :
en D9 une ligne adresse constituée du code postal suivi de la ville (
ex.



69380 Chatillon ou 01000 Bourg)
en G2 une tranche de poids (ex. 9, 19, 29, 39)
dans un autre classeur, un tableau avec :
en ordonnés, les n° des départements de 01 à 95 à partir de la cellule
A2



(leur nom figurant à partir de B2)
en abcisses, les tranches 9, 19, 29, 39, etc à partir de la cellule C1
vers
G1 ou plus
des prix enfin, dans les colonnes à partir de C2 vers G2 pour le
département
01, C3 vers G3 pour le département 02 et ainsi de suite jusqu'en
regard du
dernier département...
ma question : comment en VBA aller chercher le prix correspondant aux
infos
en D9 et G2 de la facture dans le classeur à l'intersection, donc, de
la



ligne "départements" et de la colonne "tranches", sachant qu'il ne
faudra



prendre en compte que les 2 premiers chiffres du code postal, bien
sûr...



dois-je ajouter que cela fait trois ans et demi que je suis là-dessus
et que
c'est vraiment contraint et forcé que je lance ce mayday....
merci pour votre intérêt qui, dans cette histoire, est terriblement
moins



important que le mien...
à +
jps








Avatar
FxM
Hug Jean-Paul,

Sabatier wrote:
salut françois-xavier
je m'empresse de mettre ta réponse sur disquette pour la tester in my
office...
juste un mot auparavant : tu as mis en observation :

'col +2 = colonne comprenant les prix
'note : +2 pour débuter en colonne C

est-ce à dire qu'il faut que j'ajoute +2 en bout de la ligne suivante (comme
tu as ajouté +1 à celle définissant la "lig" ?

col = Application.WorksheetFunction.Match(PL, .Range("C1:H1"), 0)


Voui Chef, modif de dernière minute passée sur une ligne et oubliée sur
l'autre.


je vais faire les essais, oeuf corse, en croisant les doigts pour que la
WorksheetFunction Match soit bien connue de XL 97 (c'est Split, je crois,
qui ne l'est pas)


Si tes tranches sont régulières (9, 19, 29, 39, ....), tu pourrais
remplacer par :
poids -> resultat cherché
9 -> 3
19 -> 4
29 -> 5
39 -> 6
+10 -> +1
-21 -> 0
col = (PL + 21) /10

je suis bien sûr que tout cela va baigner dans l'huile dont je pourrais me
resservir pour t'y faire revenir quelque andouillette lors de ton prochain
passage dans le quartier...
merci encore françois-xavier and see you soon
jps


Si tu me prends par les sentiments ... :o)

@+
FxM






"FxM" a écrit dans le message de
news:eqJ$

re-

En premiere approche, ca pourrait donner des choses comme :

Sub test()

' feuille de facture
With Sheets("BL")

'département
CP = Left(.Range("D9"), 2)
'plage de poids
PL = .Range("G2")
End With

'ouvrir le fichier autre
Workbooks.Open ("D:inboxtransport_001.xls")

'dont on suppose que la feuille se nomme ...
With Sheets("Prix")

'lig +1 = ligne comprenant le département
'note : +1 pour débuter en ligne2
lig = Application.Match(CP, .Range("A2:A96"), 0) +1

'col +2 = colonne comprenant les prix
'note : +2 pour débuter en colonne C
col = Application.WorksheetFunction.Match(PL, .Range("C1:H1"), 0)

'extraction du prix souhaité
prix = .Cells(lig , col )

End With

'fermer les prix sans sauver
ActiveWorkbook.Close False

'noter le prix dans la case qui va bien
'attention au nom de feuille
Sheets("BL").Range("A1").Value = prix
End Sub

Attention ! Il faut que les départements soient bien 01 au format texte
et non 1 avec une mise en forme. Dans le second cas, remplacer
lig = Application.Match(CP, .Range("A2:A96"), 0) +1
par
lig = cp*1 +1

@+
FxM



.....alors j'y vais de ma question mais auparavant un grand bonjour à
tout le
monde (y a si longtemps que je n'étais venu)
imaginons une facture :
en D9 une ligne adresse constituée du code postal suivi de la ville (




ex.

69380 Chatillon ou 01000 Bourg)
en G2 une tranche de poids (ex. 9, 19, 29, 39)
dans un autre classeur, un tableau avec :
en ordonnés, les n° des départements de 01 à 95 à partir de la cellule




A2

(leur nom figurant à partir de B2)
en abcisses, les tranches 9, 19, 29, 39, etc à partir de la cellule C1
vers
G1 ou plus
des prix enfin, dans les colonnes à partir de C2 vers G2 pour le
département
01, C3 vers G3 pour le département 02 et ainsi de suite jusqu'en
regard du
dernier département...
ma question : comment en VBA aller chercher le prix correspondant aux
infos
en D9 et G2 de la facture dans le classeur à l'intersection, donc, de




la

ligne "départements" et de la colonne "tranches", sachant qu'il ne




faudra

prendre en compte que les 2 premiers chiffres du code postal, bien




sûr...

dois-je ajouter que cela fait trois ans et demi que je suis là-dessus
et que
c'est vraiment contraint et forcé que je lance ce mayday....
merci pour votre intérêt qui, dans cette histoire, est terriblement




moins

important que le mien...
à +
jps













1 2