OVH Cloud OVH Cloud

Chercher plusieurs valeurs dans une plage donnee

6 réponses
Avatar
Albatroz
Salut tout le monde

Alors voila mon tableau

A B C D
incoterm cout
PPA 100
PPB 200
PPC 300
PPB 400
PPA 500
PPA 600


J'ai definit une plange (raange dans laquel je fais mes recherches) :
Set raange = Range(Cells(lignebeg.Row, 1), Cells(ligneend.Row, 50))

Je veux en fait donner a ma variable "total" la somme des couts pour
les incoterms PPA (ici "total" doit etre etre egal a 100+500+600=
1200)

le probleme est que la colonne "cout" n'est pas toujours au meme
endroit
je la repere la colonne de la maniere suivante:

Set cout = ActiveSheet.UsedRange.Find("cout", , , xlWhole)
If sub1 Is Nothing Then
MsgBox "la colonne cout n'existe pas"
Exit Sub
End If

le probleme est que je ne reussit pas a emploer la fonction find pour
resoudre ce probleme
Merci davance pour votre aide precieuse

6 réponses

Avatar
Jacky
Bonsoir,

Pas vraiment besoin de macro......

Dans une cellule
=SOMMEPROD((A2:A7="ppa")*D2:D7)

ou avec des plages nommées "incoterm" pour les données de la colonne A et
"cout" pour les données en colonne D
=SOMMEPROD((incoterm="ppa")*cout)

Salutations
JJ


"Albatroz" a écrit dans le message de news:

Salut tout le monde

Alors voila mon tableau

A B C D
incoterm cout
PPA 100
PPB 200
PPC 300
PPB 400
PPA 500
PPA 600


J'ai definit une plange (raange dans laquel je fais mes recherches) :
Set raange = Range(Cells(lignebeg.Row, 1), Cells(ligneend.Row, 50))

Je veux en fait donner a ma variable "total" la somme des couts pour
les incoterms PPA (ici "total" doit etre etre egal a 100+500+600 > 1200)

le probleme est que la colonne "cout" n'est pas toujours au meme
endroit
je la repere la colonne de la maniere suivante:

Set cout = ActiveSheet.UsedRange.Find("cout", , , xlWhole)
If sub1 Is Nothing Then
MsgBox "la colonne cout n'existe pas"
Exit Sub
End If

le probleme est que je ne reussit pas a emploer la fonction find pour
resoudre ce probleme
Merci davance pour votre aide precieuse



Avatar
Garette
Bonsoir,

Sub test()
Set cout = Cells.Find("cout")
If cout Is Nothing Then
MsgBox "La colonne cout n'existe pas"
Else
AdresseColonneCout = cout.Address
MsgBox AdresseColonneCout
End If
End Sub

La variable "AdresseColonneCout" récupère l'adresse de la cellule "cout"
Avatar
Albatroz
Merci Jacky, mais j'ai vraiment besoin d'utiliser une macro, le
probleme a ete ici tres resume; Il s'agit en fait d'un rapport extrait
sur business warehouse (SAP). et je ne peut rien faire sur ce rapport
se ce n'est creer une macro qui va chercher les donnees que je veux.


On Feb 2, 3:13 pm, "Jacky" wrote:
Bonsoir,

Pas vraiment besoin de macro......

Dans une cellule
=SOMMEPROD((A2:A7="ppa")*D2:D7)

ou avec des plages nommées "incoterm" pour les données de la colonn e A et
"cout" pour les données en colonne D
=SOMMEPROD((incoterm="ppa")*cout)

Salutations
JJ

"Albatroz" a écrit dans le message de news:




Salut tout le monde

Alors voila mon tableau

A B C D
incoterm cout
PPA 100
PPB 200
PPC 300
PPB 400
PPA 500
PPA 600

J'ai definit une plange (raange dans laquel je fais mes recherches) :
Set raange = Range(Cells(lignebeg.Row, 1), Cells(ligneend.Row, 50))

Je veux en fait donner a ma variable "total" la somme des couts pour
les incoterms PPA (ici "total" doit etre etre egal a 100+500+600=
1200)

le probleme est que la colonne "cout" n'est pas toujours au meme
endroit
je la repere la colonne de la maniere suivante:

Set cout = ActiveSheet.UsedRange.Find("cout", , , xlWhole)
If sub1 Is Nothing Then
MsgBox "la colonne cout n'existe pas"
Exit Sub
End If

le probleme est que je ne reussit pas a emploer la fonction find pour
resoudre ce probleme
Merci davance pour votre aide precieuse- Hide quoted text -


- Show quoted text -



Avatar
Albatroz
Merci Garette,
et comment je fiat ensuite pour additioner toutes les cellules qui
sont a l'intersection de la ligne qui contient "PPA" et de la colonne
qui contient "cout".

MERCI


On Feb 2, 3:17 pm, "Garette" wrote:
Bonsoir,

Sub test()
Set cout = Cells.Find("cout")
If cout Is Nothing Then
MsgBox "La colonne cout n'existe pas"
Else
AdresseColonneCout = cout.Address
MsgBox AdresseColonneCout
End If
End Sub

La variable "AdresseColonneCout" récupère l'adresse de la cellule "co ut"


Avatar
Garette
"Albatroz" a écrit dans le message de news:

Merci Garette,

et comment je fiat ensuite pour additioner toutes les cellules qui
sont a l'intersection de la ligne qui contient "PPA" et de la colonne
qui contient "cout".

MERCI


Je propose cette solution :

Sub test2()
Mavar = "PPA"
Resultat = 0
Set cout = Cells.Find("cout")
Set incoterm = Cells.Find("incoterm")
If cout Is Nothing Then
MsgBox "La colonne cout n'existe pas"
Else
For Each X In Range(Cells(incoterm.Row, incoterm.Column), _
Cells(65000, incoterm.Column).End(xlUp))
If X = Mavar Then Resultat = _
Resultat + Cells(X.Row, cout.Column).Value
Next
MsgBox Resultat
End If
End Sub


Avatar
Albatroz
Super Garette, ca marche comme sur des roulettes.
Simple et efficace: j'adore!

Merci encore et bon WE



Merci Garette,

et comment je fiat ensuite pour additioner toutes les cellules qui
sont a l'intersection de la ligne qui contient "PPA" et de la colonne
qui contient "cout".
MERCI


Je propose cette solution :

Sub test2()
Mavar = "PPA"
Resultat = 0
Set cout = Cells.Find("cout")
Set incoterm = Cells.Find("incoterm")
If cout Is Nothing Then
MsgBox "La colonne cout n'existe pas"
Else
For Each X In Range(Cells(incoterm.Row, incoterm.Column), _
Cells(65000, incoterm.Column).End(xlUp))
If X = Mavar Then Resultat = _
Resultat + Cells(X.Row, cout.Column).Value
Next
MsgBox Resultat
End If
End Sub