Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Copie d'une ligne selon plusieurs critères

29 réponses
Avatar
lglux
Bonsoir a tous,

Malgr=E9 la mine d'or pr=E9sente sur le forum, je ne dois pas utiliser les
bons mots cl=E9s car je ne trouve pas la reponse...

J'utilise le vba assez sommairement et j'aimerai developper mes
connaissances surtout que l=E0 j'en ai vraiment besoin pour le boulot:

(je vous passe l'etape du formulaire et tout que j'etais pas peu fier
d'avoir mis en place)

Voil=E0 j'aimerai copier une ligne (table "media") suivant plusieurs
crit=E8res d'une autre ligne d'une autre worksheet (ins=E9r=E9 via le
formulaire) "fonds".

Le choix de la ligne =E0 copier doit se faire en fonction de trois
criteres.

Pour faire simple, j'aimerai la copie de la ligne fonds + la copie de
la ligne media (a la suite sur la meme ligne) sur une troisieme
feuille SI et seulement SI les trois criteres present dans les deux
lignes fonds et media sont =E9gaux.

Pour l'instant ca marche pour le critere pays avec ce code mais je ne
sais pas comment inclure les autres criteres (avec un and? comment
utiliser cela? mon code n'est pas trop lourd?):

For i =3D 1 To 27
pays_a_tester =3D Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester =3D "Oui" Then

' recherche dans feuille M=E9dia
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text =3D Tab_pays(i)
Then



Sheets("r=E9sult").Range("a" & ligne_courante) =3D
Sheets("Funds").Range("a" & cpt_funds)
Sheets("r=E9sult").Range("b" & ligne_courante) =3D
Sheets("Funds").Range("b" & cpt_funds)
Sheets("r=E9sult").Range("c" & ligne_courante) =3D
Sheets("Funds").Range("c" & cpt_funds)
Sheets("r=E9sult").Range("d" & ligne_courante) =3D
Sheets("Funds").Range("d" & cpt_funds)
Sheets("r=E9sult").Range("e" & ligne_courante) =3D
Sheets("Funds").Range("e" & cpt_funds)
Sheets("r=E9sult").Range("f" & ligne_courante) =3D
Sheets("Funds").Range("f" & cpt_funds)
Sheets("r=E9sult").Range("g" & ligne_courante) =3D Tab_pays(i)
Sheets("r=E9sult").Range("h" & ligne_courante) =3D
Sheets("media").Range("c" & cpt_media)
Sheets("r=E9sult").Range("i" & ligne_courante) =3D
Sheets("media").Range("d" & cpt_media)
Sheets("r=E9sult").Range("j" & ligne_courante) =3D
Sheets("media").Range("e" & cpt_media)
ligne_courante =3D ligne_courante + 1
End If

cpt_media =3D cpt_media + 1

Loop

cpt_media =3D 2

End If

Next


cpt_funds =3D cpt_funds + 1

Loop



(pour ceux qui veulent l'integralit=E9 du code pour peut etre mieux
comprendre ma manip)
---------------------------------------------------------------------------=
----------------------------------------------------

Sub Macro1()
'

'

Dim Tab_pays(30) As String ' tableau de tous les pays
Dim cpt_funds, cpt_media As Integer
Dim Tab_lettres(27) As String ' tableau des colonnes de G =E0 AG

Tab_lettres(1) =3D "G"
Tab_lettres(2) =3D "H"
Tab_lettres(3) =3D "I"
Tab_lettres(4) =3D "J"
Tab_lettres(5) =3D "K"
Tab_lettres(6) =3D "L"
Tab_lettres(7) =3D "M"
Tab_lettres(8) =3D "N"
Tab_lettres(9) =3D "O"
Tab_lettres(10) =3D "P"
Tab_lettres(11) =3D "Q"
Tab_lettres(12) =3D "R"
Tab_lettres(13) =3D "S"
Tab_lettres(14) =3D "T"
Tab_lettres(15) =3D "U"
Tab_lettres(16) =3D "V"
Tab_lettres(17) =3D "W"
Tab_lettres(18) =3D "X"
Tab_lettres(19) =3D "Y"
Tab_lettres(20) =3D "Z"
Tab_lettres(21) =3D "AA"
Tab_lettres(22) =3D "AB"
Tab_lettres(23) =3D "AC"
Tab_lettres(24) =3D "AD"
Tab_lettres(25) =3D "AE"
Tab_lettres(26) =3D "AF"
Tab_lettres(27) =3D "AG"

' Lecture ent=EAte feuille Funds

ISIN =3D Sheets("Funds").Range("A1").Value
Funds =3D Sheets("Funds").Range("B1").Value
Subs_Funds =3D Sheets("Funds").Range("C1").Value
Share_classe =3D Sheets("Funds").Range("D1").Value
Type_share =3D Sheets("Funds").Range("E1").Value
launch_date =3D Sheets("Funds").Range("F1").Value

' remplissage tableau pays

Tab_pays(1) =3D Sheets("Funds").Range("G1").Value
Tab_pays(2) =3D Sheets("Funds").Range("H1").Value
Tab_pays(3) =3D Sheets("Funds").Range("I1").Value
Tab_pays(4) =3D Sheets("Funds").Range("J1").Value
Tab_pays(5) =3D Sheets("Funds").Range("K1").Value
Tab_pays(6) =3D Sheets("Funds").Range("L1").Value
Tab_pays(7) =3D Sheets("Funds").Range("M1").Value
Tab_pays(8) =3D Sheets("Funds").Range("N1").Value
Tab_pays(9) =3D Sheets("Funds").Range("O1").Value
Tab_pays(10) =3D Sheets("Funds").Range("P1").Value
Tab_pays(11) =3D Sheets("Funds").Range("Q1").Value
Tab_pays(12) =3D Sheets("Funds").Range("R1").Value
Tab_pays(13) =3D Sheets("Funds").Range("S1").Value
Tab_pays(14) =3D Sheets("Funds").Range("T1").Value
Tab_pays(15) =3D Sheets("Funds").Range("U1").Value
Tab_pays(16) =3D Sheets("Funds").Range("V1").Value
Tab_pays(17) =3D Sheets("Funds").Range("W1").Value
Tab_pays(18) =3D Sheets("Funds").Range("X1").Value
Tab_pays(19) =3D Sheets("Funds").Range("Y1").Value
Tab_pays(20) =3D Sheets("Funds").Range("Z1").Value
Tab_pays(21) =3D Sheets("Funds").Range("AA1").Value
Tab_pays(22) =3D Sheets("Funds").Range("AB1").Value
Tab_pays(23) =3D Sheets("Funds").Range("AC1").Value
Tab_pays(24) =3D Sheets("Funds").Range("AD1").Value
Tab_pays(25) =3D Sheets("Funds").Range("AE1").Value
Tab_pays(26) =3D Sheets("Funds").Range("AF1").Value
Tab_pays(27) =3D Sheets("Funds").Range("AG1").Value

' Lecture ent=EAte feuille Media

Country_pub =3D Sheets("Media").Range("B1").Value
Media_designa =3D Sheets("Media").Range("C1").Value
Pub_Share =3D Sheets("Media").Range("D1").Value
Pub_Type_share =3D Sheets("Media").Range("E1").Value

' Copie de l'ent=EAte dans la feuille r=E9sult

Sheets("r=E9sult").Range("a1") =3D ISIN
Sheets("r=E9sult").Range("b1") =3D Funds
Sheets("r=E9sult").Range("c1") =3D Subs_Funds
Sheets("r=E9sult").Range("d1") =3D Share_classe
Sheets("r=E9sult").Range("e1") =3D Type_share
Sheets("r=E9sult").Range("f1") =3D launch_date
Sheets("r=E9sult").Range("g1") =3D Country_pub
Sheets("r=E9sult").Range("h1") =3D Media_designa
Sheets("r=E9sult").Range("i1") =3D Pub_Share
Sheets("r=E9sult").Range("j1") =3D Pub_Type_share

cpt_funds =3D 2 ' position premi=E8re ligne utile dans feuille Funds
cpt_media =3D 2 ' position premi=E8re ligne utile dans feuille Media
ligne_courante =3D cpt_funds 'position ligne courante dans feuille
r=E9sult

' faire tant que Ax de la feuille Funds n'est pas vide

Do While Sheets("Funds").Range("a" & cpt_funds).Text <> ""

'recherche des m=E9dias de chaque pays

For i =3D 1 To 27
pays_a_tester =3D Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester =3D "Oui" Then

' recherche dans feuille M=E9dia
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text =3D Tab_pays(i)
Then

'and if sheets("media").range("d" & cpt_media).text =3D
Sheets("Funds").Range("D1").Value

Sheets("r=E9sult").Range("a" & ligne_courante) =3D
Sheets("Funds").Range("a" & cpt_funds)
Sheets("r=E9sult").Range("b" & ligne_courante) =3D
Sheets("Funds").Range("b" & cpt_funds)
Sheets("r=E9sult").Range("c" & ligne_courante) =3D
Sheets("Funds").Range("c" & cpt_funds)
Sheets("r=E9sult").Range("d" & ligne_courante) =3D
Sheets("Funds").Range("d" & cpt_funds)
Sheets("r=E9sult").Range("e" & ligne_courante) =3D
Sheets("Funds").Range("e" & cpt_funds)
Sheets("r=E9sult").Range("f" & ligne_courante) =3D
Sheets("Funds").Range("f" & cpt_funds)
Sheets("r=E9sult").Range("g" & ligne_courante) =3D Tab_pays(i)
Sheets("r=E9sult").Range("h" & ligne_courante) =3D
Sheets("media").Range("c" & cpt_media)
Sheets("r=E9sult").Range("i" & ligne_courante) =3D
Sheets("media").Range("d" & cpt_media)
Sheets("r=E9sult").Range("j" & ligne_courante) =3D
Sheets("media").Range("e" & cpt_media)
ligne_courante =3D ligne_courante + 1
End If

cpt_media =3D cpt_media + 1

Loop

cpt_media =3D 2

End If

Next


cpt_funds =3D cpt_funds + 1

Loop


'
End Sub

10 réponses

1 2 3
Avatar
Daniel
Bonjour.
C'est difficile de se faire une idée, mais, oui, avec des "and", ça doit le
faire. Sinon, le mieux est de télécharger ton classeur sur www.cjoint.com et
de poster l'adresse générée. N'oublie pas de remplacer les éventuelles
données confidentielles
Cordialement.
Daniel
"lglux" a écrit dans le message de news:

Bonsoir a tous,

Malgré la mine d'or présente sur le forum, je ne dois pas utiliser les
bons mots clés car je ne trouve pas la reponse...

J'utilise le vba assez sommairement et j'aimerai developper mes
connaissances surtout que là j'en ai vraiment besoin pour le boulot:

(je vous passe l'etape du formulaire et tout que j'etais pas peu fier
d'avoir mis en place)

Voilà j'aimerai copier une ligne (table "media") suivant plusieurs
critères d'une autre ligne d'une autre worksheet (inséré via le
formulaire) "fonds".

Le choix de la ligne à copier doit se faire en fonction de trois
criteres.

Pour faire simple, j'aimerai la copie de la ligne fonds + la copie de
la ligne media (a la suite sur la meme ligne) sur une troisieme
feuille SI et seulement SI les trois criteres present dans les deux
lignes fonds et media sont égaux.

Pour l'instant ca marche pour le critere pays avec ce code mais je ne
sais pas comment inclure les autres criteres (avec un and? comment
utiliser cela? mon code n'est pas trop lourd?):

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i)
Then



Sheets("résult").Range("a" & ligne_courante) Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante) Sheets("media").Range("c" & cpt_media)
Sheets("résult").Range("i" & ligne_courante) Sheets("media").Range("d" & cpt_media)
Sheets("résult").Range("j" & ligne_courante) Sheets("media").Range("e" & cpt_media)
ligne_courante = ligne_courante + 1
End If

cpt_media = cpt_media + 1

Loop

cpt_media = 2

End If

Next


cpt_funds = cpt_funds + 1

Loop



(pour ceux qui veulent l'integralité du code pour peut etre mieux
comprendre ma manip)
-------------------------------------------------------------------------------------------------------------------------------

Sub Macro1()
'

'

Dim Tab_pays(30) As String ' tableau de tous les pays
Dim cpt_funds, cpt_media As Integer
Dim Tab_lettres(27) As String ' tableau des colonnes de G à AG

Tab_lettres(1) = "G"
Tab_lettres(2) = "H"
Tab_lettres(3) = "I"
Tab_lettres(4) = "J"
Tab_lettres(5) = "K"
Tab_lettres(6) = "L"
Tab_lettres(7) = "M"
Tab_lettres(8) = "N"
Tab_lettres(9) = "O"
Tab_lettres(10) = "P"
Tab_lettres(11) = "Q"
Tab_lettres(12) = "R"
Tab_lettres(13) = "S"
Tab_lettres(14) = "T"
Tab_lettres(15) = "U"
Tab_lettres(16) = "V"
Tab_lettres(17) = "W"
Tab_lettres(18) = "X"
Tab_lettres(19) = "Y"
Tab_lettres(20) = "Z"
Tab_lettres(21) = "AA"
Tab_lettres(22) = "AB"
Tab_lettres(23) = "AC"
Tab_lettres(24) = "AD"
Tab_lettres(25) = "AE"
Tab_lettres(26) = "AF"
Tab_lettres(27) = "AG"

' Lecture entête feuille Funds

ISIN = Sheets("Funds").Range("A1").Value
Funds = Sheets("Funds").Range("B1").Value
Subs_Funds = Sheets("Funds").Range("C1").Value
Share_classe = Sheets("Funds").Range("D1").Value
Type_share = Sheets("Funds").Range("E1").Value
launch_date = Sheets("Funds").Range("F1").Value

' remplissage tableau pays

Tab_pays(1) = Sheets("Funds").Range("G1").Value
Tab_pays(2) = Sheets("Funds").Range("H1").Value
Tab_pays(3) = Sheets("Funds").Range("I1").Value
Tab_pays(4) = Sheets("Funds").Range("J1").Value
Tab_pays(5) = Sheets("Funds").Range("K1").Value
Tab_pays(6) = Sheets("Funds").Range("L1").Value
Tab_pays(7) = Sheets("Funds").Range("M1").Value
Tab_pays(8) = Sheets("Funds").Range("N1").Value
Tab_pays(9) = Sheets("Funds").Range("O1").Value
Tab_pays(10) = Sheets("Funds").Range("P1").Value
Tab_pays(11) = Sheets("Funds").Range("Q1").Value
Tab_pays(12) = Sheets("Funds").Range("R1").Value
Tab_pays(13) = Sheets("Funds").Range("S1").Value
Tab_pays(14) = Sheets("Funds").Range("T1").Value
Tab_pays(15) = Sheets("Funds").Range("U1").Value
Tab_pays(16) = Sheets("Funds").Range("V1").Value
Tab_pays(17) = Sheets("Funds").Range("W1").Value
Tab_pays(18) = Sheets("Funds").Range("X1").Value
Tab_pays(19) = Sheets("Funds").Range("Y1").Value
Tab_pays(20) = Sheets("Funds").Range("Z1").Value
Tab_pays(21) = Sheets("Funds").Range("AA1").Value
Tab_pays(22) = Sheets("Funds").Range("AB1").Value
Tab_pays(23) = Sheets("Funds").Range("AC1").Value
Tab_pays(24) = Sheets("Funds").Range("AD1").Value
Tab_pays(25) = Sheets("Funds").Range("AE1").Value
Tab_pays(26) = Sheets("Funds").Range("AF1").Value
Tab_pays(27) = Sheets("Funds").Range("AG1").Value

' Lecture entête feuille Media

Country_pub = Sheets("Media").Range("B1").Value
Media_designa = Sheets("Media").Range("C1").Value
Pub_Share = Sheets("Media").Range("D1").Value
Pub_Type_share = Sheets("Media").Range("E1").Value

' Copie de l'entête dans la feuille résult

Sheets("résult").Range("a1") = ISIN
Sheets("résult").Range("b1") = Funds
Sheets("résult").Range("c1") = Subs_Funds
Sheets("résult").Range("d1") = Share_classe
Sheets("résult").Range("e1") = Type_share
Sheets("résult").Range("f1") = launch_date
Sheets("résult").Range("g1") = Country_pub
Sheets("résult").Range("h1") = Media_designa
Sheets("résult").Range("i1") = Pub_Share
Sheets("résult").Range("j1") = Pub_Type_share

cpt_funds = 2 ' position première ligne utile dans feuille Funds
cpt_media = 2 ' position première ligne utile dans feuille Media
ligne_courante = cpt_funds 'position ligne courante dans feuille
résult

' faire tant que Ax de la feuille Funds n'est pas vide

Do While Sheets("Funds").Range("a" & cpt_funds).Text <> ""

'recherche des médias de chaque pays

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i)
Then

'and if sheets("media").range("d" & cpt_media).text Sheets("Funds").Range("D1").Value

Sheets("résult").Range("a" & ligne_courante) Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante) Sheets("media").Range("c" & cpt_media)
Sheets("résult").Range("i" & ligne_courante) Sheets("media").Range("d" & cpt_media)
Sheets("résult").Range("j" & ligne_courante) Sheets("media").Range("e" & cpt_media)
ligne_courante = ligne_courante + 1
End If

cpt_media = cpt_media + 1

Loop

cpt_media = 2

End If

Next


cpt_funds = cpt_funds + 1

Loop


'
End Sub
Avatar
FFO
Salut à toi

Je te propose ces allègements

Pour :

Tab_lettres(1) = "G"
Tab_lettres(2) = "H"
Tab_lettres(3) = "I"
Tab_lettres(4) = "J"
Tab_lettres(5) = "K"
Tab_lettres(6) = "L"
Tab_lettres(7) = "M"
Tab_lettres(8) = "N"
Tab_lettres(9) = "O"
Tab_lettres(10) = "P"
Tab_lettres(11) = "Q"
Tab_lettres(12) = "R"
Tab_lettres(13) = "S"
Tab_lettres(14) = "T"
Tab_lettres(15) = "U"
Tab_lettres(16) = "V"
Tab_lettres(17) = "W"
Tab_lettres(18) = "X"
Tab_lettres(19) = "Y"
Tab_lettres(20) = "Z"
Tab_lettres(21) = "AA"
Tab_lettres(22) = "AB"
Tab_lettres(23) = "AC"
Tab_lettres(24) = "AD"
Tab_lettres(25) = "AE"
Tab_lettres(26) = "AF"
Tab_lettres(27) = "AG"

Et

Tab_pays(1) = Sheets("Funds").Range("G1").Value
Tab_pays(2) = Sheets("Funds").Range("H1").Value
Tab_pays(3) = Sheets("Funds").Range("I1").Value
Tab_pays(4) = Sheets("Funds").Range("J1").Value
Tab_pays(5) = Sheets("Funds").Range("K1").Value
Tab_pays(6) = Sheets("Funds").Range("L1").Value
Tab_pays(7) = Sheets("Funds").Range("M1").Value
Tab_pays(8) = Sheets("Funds").Range("N1").Value
Tab_pays(9) = Sheets("Funds").Range("O1").Value
Tab_pays(10) = Sheets("Funds").Range("P1").Value
Tab_pays(11) = Sheets("Funds").Range("Q1").Value
Tab_pays(12) = Sheets("Funds").Range("R1").Value
Tab_pays(13) = Sheets("Funds").Range("S1").Value
Tab_pays(14) = Sheets("Funds").Range("T1").Value
Tab_pays(15) = Sheets("Funds").Range("U1").Value
Tab_pays(16) = Sheets("Funds").Range("V1").Value
Tab_pays(17) = Sheets("Funds").Range("W1").Value
Tab_pays(18) = Sheets("Funds").Range("X1").Value
Tab_pays(19) = Sheets("Funds").Range("Y1").Value
Tab_pays(20) = Sheets("Funds").Range("Z1").Value
Tab_pays(21) = Sheets("Funds").Range("AA1").Value
Tab_pays(22) = Sheets("Funds").Range("AB1").Value
Tab_pays(23) = Sheets("Funds").Range("AC1").Value
Tab_pays(24) = Sheets("Funds").Range("AD1").Value
Tab_pays(25) = Sheets("Funds").Range("AE1").Value
Tab_pays(26) = Sheets("Funds").Range("AF1").Value
Tab_pays(27) = Sheets("Funds").Range("AG1").Value
Je te suggère :

Donnée = "GHIJKLMNOPQRSTUVWXYZABCDEFG"
For i = 1 To 27
Tab_pays(i) = Sheets("Funds").Range("F1").Offset(0, i).Value
If i < 21 Then
Tab_lettres (i) = Mid(Donnée, i, 1)
Else
Tab_lettres (i) = "A" & Mid(Donnée, i, 1)
End If
Next

C'est plus court pour un même résultat

Concernant tes conditions :

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i)
Then

'and if sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value

Je mettrai :

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then

A tester !!!

Pour :

ISIN = Sheets("Funds").Range("A1").Value
Funds = Sheets("Funds").Range("B1").Value
Subs_Funds = Sheets("Funds").Range("C1").Value
Share_classe = Sheets("Funds").Range("D1").Value
Type_share = Sheets("Funds").Range("E1").Value
launch_date = Sheets("Funds").Range("F1").Value

Et

Country_pub = Sheets("Media").Range("B1").Value
Media_designa = Sheets("Media").Range("C1").Value
Pub_Share = Sheets("Media").Range("D1").Value
Pub_Type_share = Sheets("Media").Range("E1").Value


Que tu rapelles ici :

Sheets("résult").Range("a1") = ISIN
Sheets("résult").Range("b1") = Funds
Sheets("résult").Range("c1") = Subs_Funds
Sheets("résult").Range("d1") = Share_classe
Sheets("résult").Range("e1") = Type_share
Sheets("résult").Range("f1") = launch_date
Sheets("résult").Range("g1") = Country_pub
Sheets("résult").Range("h1") = Media_designa
Sheets("résult").Range("i1") = Pub_Share
Sheets("résult").Range("j1") = Pub_Type_share

Pourquoi ne pas mettre directement ces lignes :

Sheets("résult").Range("a1") = Sheets("Funds").Range("A1").Value
Sheets("résult").Range("b1") = Sheets("Funds").Range("B1").Value
Sheets("résult").Range("c1") = Sheets("Funds").Range("C1").Value
Sheets("résult").Range("d1") = Sheets("Funds").Range("D1").Value
Sheets("résult").Range("e1") = Sheets("Funds").Range("E1").Value
Sheets("résult").Range("f1") = Sheets("Funds").Range("F1").Value
Sheets("résult").Range("g1") = Sheets("Media").Range("B1").Value
Sheets("résult").Range("h1") = Sheets("Media").Range("C1").Value
Sheets("résult").Range("i1") = Sheets("Media").Range("D1").Value
Sheets("résult").Range("j1") = Sheets("Media").Range("E1").Value

En remplacement de toutes les autres !!!!


Pour :

Sheets("résult").Range("a" & ligne_courante) =
Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) =
Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) =
Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) =
Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) =
Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) =
Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante) =
Sheets("media").Range("c" & cpt_media)
Sheets("résult").Range("i" & ligne_courante) =
Sheets("media").Range("d" & cpt_media)
Sheets("résult").Range("j" & ligne_courante) =
Sheets("media").Range("e" & cpt_media)
ligne_courante = ligne_courante + 1


Je te suggère :

Sheets("résult").Range("a" & ligne_courante, "f" & ligne_courante) .Value =
Sheets("Funds").Range("a" & ligne_courante, "f" & ligne_courante) .Value
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante, "j" & ligne_courante) .Value =
Sheets("media").Range("c" & cpt_media, "e" & cpt_media) .Value
ligne_courante = ligne_courante + 1

Ce qui donne au final :

Dim Tab_pays(30) As String ' tableau de tous les pays
Dim cpt_funds, cpt_media As Integer
Dim Tab_lettres(27) As String ' tableau des colonnes de G à AG
Donnée = "GHIJKLMNOPQRSTUVWXYZABCDEFG"
For i = 1 To 27
Tab_pays(i) = Sheets("Funds").Range("F1").Offset(0, i).Value
If i < 21 Then
Tab_lettres (i) = Mid(Donnée, i, 1)
Else
Tab_lettres (i) = "A" & Mid(Donnée, i, 1)
End If
Next
Sheets("résult").Range("a1") = Sheets("Funds").Range("A1").Value
Sheets("résult").Range("b1") = Sheets("Funds").Range("B1").Value
Sheets("résult").Range("c1") = Sheets("Funds").Range("C1").Value
Sheets("résult").Range("d1") = Sheets("Funds").Range("D1").Value
Sheets("résult").Range("e1") = Sheets("Funds").Range("E1").Value
Sheets("résult").Range("f1") = Sheets("Funds").Range("F1").Value
Sheets("résult").Range("g1") = Sheets("Media").Range("B1").Value
Sheets("résult").Range("h1") = Sheets("Media").Range("C1").Value
Sheets("résult").Range("i1") = Sheets("Media").Range("D1").Value
Sheets("résult").Range("j1") = Sheets("Media").Range("E1").Value
cpt_funds = 2 ' position première ligne utile dans feuille Funds
cpt_media = 2 ' position première ligne utile dans feuille Media
ligne_courante = cpt_funds 'position ligne courante dans feuille
résult

' faire tant que Ax de la feuille Funds n'est pas vide

Do While Sheets("Funds").Range("a" & cpt_funds).Text <> ""

'recherche des médias de chaque pays

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Sheets("résult").Range("a" & ligne_courante, "f" & ligne_courante) .Value =
Sheets("Funds").Range("a" & ligne_courante, "f" & ligne_courante) .Value
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante, "j" & ligne_courante) .Value =
Sheets("media").Range("c" & cpt_media, "e" & cpt_media) .Value
ligne_courante = ligne_courante + 1
End If

cpt_media = cpt_media + 1

Loop

cpt_media = 2

End If

Next


cpt_funds = cpt_funds + 1

Loop


J'espère que cette cure d'amaigrissement te conviendra
Dis moi !!!



Bonsoir a tous,

Malgré la mine d'or présente sur le forum, je ne dois pas utiliser les
bons mots clés car je ne trouve pas la reponse...

J'utilise le vba assez sommairement et j'aimerai developper mes
connaissances surtout que là j'en ai vraiment besoin pour le boulot:

(je vous passe l'etape du formulaire et tout que j'etais pas peu fier
d'avoir mis en place)

Voilà j'aimerai copier une ligne (table "media") suivant plusieurs
critères d'une autre ligne d'une autre worksheet (inséré via le
formulaire) "fonds".

Le choix de la ligne à copier doit se faire en fonction de trois
criteres.

Pour faire simple, j'aimerai la copie de la ligne fonds + la copie de
la ligne media (a la suite sur la meme ligne) sur une troisieme
feuille SI et seulement SI les trois criteres present dans les deux
lignes fonds et media sont égaux.

Pour l'instant ca marche pour le critere pays avec ce code mais je ne
sais pas comment inclure les autres criteres (avec un and? comment
utiliser cela? mon code n'est pas trop lourd?):

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i)
Then



Sheets("résult").Range("a" & ligne_courante) > Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) > Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) > Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) > Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) > Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) > Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante) > Sheets("media").Range("c" & cpt_media)
Sheets("résult").Range("i" & ligne_courante) > Sheets("media").Range("d" & cpt_media)
Sheets("résult").Range("j" & ligne_courante) > Sheets("media").Range("e" & cpt_media)
ligne_courante = ligne_courante + 1
End If

cpt_media = cpt_media + 1

Loop

cpt_media = 2

End If

Next


cpt_funds = cpt_funds + 1

Loop



(pour ceux qui veulent l'integralité du code pour peut etre mieux
comprendre ma manip)
-------------------------------------------------------------------------------------------------------------------------------

Sub Macro1()
'

'

Dim Tab_pays(30) As String ' tableau de tous les pays
Dim cpt_funds, cpt_media As Integer
Dim Tab_lettres(27) As String ' tableau des colonnes de G à AG

Tab_lettres(1) = "G"
Tab_lettres(2) = "H"
Tab_lettres(3) = "I"
Tab_lettres(4) = "J"
Tab_lettres(5) = "K"
Tab_lettres(6) = "L"
Tab_lettres(7) = "M"
Tab_lettres(8) = "N"
Tab_lettres(9) = "O"
Tab_lettres(10) = "P"
Tab_lettres(11) = "Q"
Tab_lettres(12) = "R"
Tab_lettres(13) = "S"
Tab_lettres(14) = "T"
Tab_lettres(15) = "U"
Tab_lettres(16) = "V"
Tab_lettres(17) = "W"
Tab_lettres(18) = "X"
Tab_lettres(19) = "Y"
Tab_lettres(20) = "Z"
Tab_lettres(21) = "AA"
Tab_lettres(22) = "AB"
Tab_lettres(23) = "AC"
Tab_lettres(24) = "AD"
Tab_lettres(25) = "AE"
Tab_lettres(26) = "AF"
Tab_lettres(27) = "AG"

' Lecture entête feuille Funds

ISIN = Sheets("Funds").Range("A1").Value
Funds = Sheets("Funds").Range("B1").Value
Subs_Funds = Sheets("Funds").Range("C1").Value
Share_classe = Sheets("Funds").Range("D1").Value
Type_share = Sheets("Funds").Range("E1").Value
launch_date = Sheets("Funds").Range("F1").Value

' remplissage tableau pays

Tab_pays(1) = Sheets("Funds").Range("G1").Value
Tab_pays(2) = Sheets("Funds").Range("H1").Value
Tab_pays(3) = Sheets("Funds").Range("I1").Value
Tab_pays(4) = Sheets("Funds").Range("J1").Value
Tab_pays(5) = Sheets("Funds").Range("K1").Value
Tab_pays(6) = Sheets("Funds").Range("L1").Value
Tab_pays(7) = Sheets("Funds").Range("M1").Value
Tab_pays(8) = Sheets("Funds").Range("N1").Value
Tab_pays(9) = Sheets("Funds").Range("O1").Value
Tab_pays(10) = Sheets("Funds").Range("P1").Value
Tab_pays(11) = Sheets("Funds").Range("Q1").Value
Tab_pays(12) = Sheets("Funds").Range("R1").Value
Tab_pays(13) = Sheets("Funds").Range("S1").Value
Tab_pays(14) = Sheets("Funds").Range("T1").Value
Tab_pays(15) = Sheets("Funds").Range("U1").Value
Tab_pays(16) = Sheets("Funds").Range("V1").Value
Tab_pays(17) = Sheets("Funds").Range("W1").Value
Tab_pays(18) = Sheets("Funds").Range("X1").Value
Tab_pays(19) = Sheets("Funds").Range("Y1").Value
Tab_pays(20) = Sheets("Funds").Range("Z1").Value
Tab_pays(21) = Sheets("Funds").Range("AA1").Value
Tab_pays(22) = Sheets("Funds").Range("AB1").Value
Tab_pays(23) = Sheets("Funds").Range("AC1").Value
Tab_pays(24) = Sheets("Funds").Range("AD1").Value
Tab_pays(25) = Sheets("Funds").Range("AE1").Value
Tab_pays(26) = Sheets("Funds").Range("AF1").Value
Tab_pays(27) = Sheets("Funds").Range("AG1").Value

' Lecture entête feuille Media

Country_pub = Sheets("Media").Range("B1").Value
Media_designa = Sheets("Media").Range("C1").Value
Pub_Share = Sheets("Media").Range("D1").Value
Pub_Type_share = Sheets("Media").Range("E1").Value

' Copie de l'entête dans la feuille résult

Sheets("résult").Range("a1") = ISIN
Sheets("résult").Range("b1") = Funds
Sheets("résult").Range("c1") = Subs_Funds
Sheets("résult").Range("d1") = Share_classe
Sheets("résult").Range("e1") = Type_share
Sheets("résult").Range("f1") = launch_date
Sheets("résult").Range("g1") = Country_pub
Sheets("résult").Range("h1") = Media_designa
Sheets("résult").Range("i1") = Pub_Share
Sheets("résult").Range("j1") = Pub_Type_share

cpt_funds = 2 ' position première ligne utile dans feuille Funds
cpt_media = 2 ' position première ligne utile dans feuille Media
ligne_courante = cpt_funds 'position ligne courante dans feuille
résult

' faire tant que Ax de la feuille Funds n'est pas vide

Do While Sheets("Funds").Range("a" & cpt_funds).Text <> ""

'recherche des médias de chaque pays

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i)
Then

'and if sheets("media").range("d" & cpt_media).text > Sheets("Funds").Range("D1").Value

Sheets("résult").Range("a" & ligne_courante) > Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) > Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) > Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) > Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) > Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) > Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante) > Sheets("media").Range("c" & cpt_media)
Sheets("résult").Range("i" & ligne_courante) > Sheets("media").Range("d" & cpt_media)
Sheets("résult").Range("j" & ligne_courante) > Sheets("media").Range("e" & cpt_media)
ligne_courante = ligne_courante + 1
End If

cpt_media = cpt_media + 1

Loop

cpt_media = 2

End If

Next


cpt_funds = cpt_funds + 1

Loop


'
End Sub




Avatar
lglux
Bonjour Daniel,

J'ai pas osé mettre un fichier car j'avais lu la netiquette de ce
forum, certes datée de 2003..

http://cjoint.com/?ikkARtRCiO

sur la feuille result j'ai mis les infos pour lancer la macro:

1. Appuyer sur le bouton en haut a droite
2. remplir les champs
3. input data puis valider
4. resultat dans cette feuille, j'aimerai que la colonne D = colonne I
ou "*"

MERCI !!


On 10 août, 09:53, "Daniel" wrote:
Bonjour.
C'est difficile de se faire une idée, mais, oui, avec des "and", ça d oit le
faire. Sinon, le mieux est de télécharger ton classeur surwww.cjoint. comet
de poster l'adresse générée. N'oublie pas de remplacer les éventu elles
données confidentielles
Cordialement.
Daniel
"lglux" a écrit dans le message de news:

Bonsoir a tous,

Malgré la mine d'or présente sur le forum, je ne dois pas utiliser les
bons mots clés car je ne trouve pas la reponse...

J'utilise le vba assez sommairement et j'aimerai developper mes
connaissances surtout que là j'en ai vraiment besoin pour le boulot:

(je vous passe l'etape du formulaire et tout que j'etais pas peu fier
d'avoir mis en place)

Voilà j'aimerai copier une ligne (table "media") suivant plusieurs
critères d'une autre ligne d'une autre worksheet (inséré via le
formulaire) "fonds".

Le choix de la ligne à copier doit se faire en fonction de trois
criteres.

Pour faire simple, j'aimerai la copie de la ligne fonds + la copie de
la ligne media (a la suite sur la meme ligne) sur une troisieme
feuille SI et seulement SI les trois criteres present dans les deux
lignes fonds et media sont égaux.

Pour l'instant ca marche pour le critere pays avec ce code mais je ne
sais pas comment inclure les autres criteres (avec un and? comment
utiliser cela? mon code n'est pas trop lourd?):

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i)
Then

Sheets("résult").Range("a" & ligne_courante) =
Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) =
Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) =
Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) =
Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) =
Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) =
Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante) =
Sheets("media").Range("c" & cpt_media)
Sheets("résult").Range("i" & ligne_courante) =
Sheets("media").Range("d" & cpt_media)
Sheets("résult").Range("j" & ligne_courante) =
Sheets("media").Range("e" & cpt_media)
ligne_courante = ligne_courante + 1
End If

cpt_media = cpt_media + 1

Loop

cpt_media = 2

End If

Next

cpt_funds = cpt_funds + 1

Loop

(pour ceux qui veulent l'integralité du code pour peut etre mieux
comprendre ma manip)
------------------------------------------------------------------------- --­----------------------------------------------------

Sub Macro1()
'

'

Dim Tab_pays(30) As String ' tableau de tous les pays
Dim cpt_funds, cpt_media As Integer
Dim Tab_lettres(27) As String ' tableau des colonnes de G à AG

Tab_lettres(1) = "G"
Tab_lettres(2) = "H"
Tab_lettres(3) = "I"
Tab_lettres(4) = "J"
Tab_lettres(5) = "K"
Tab_lettres(6) = "L"
Tab_lettres(7) = "M"
Tab_lettres(8) = "N"
Tab_lettres(9) = "O"
Tab_lettres(10) = "P"
Tab_lettres(11) = "Q"
Tab_lettres(12) = "R"
Tab_lettres(13) = "S"
Tab_lettres(14) = "T"
Tab_lettres(15) = "U"
Tab_lettres(16) = "V"
Tab_lettres(17) = "W"
Tab_lettres(18) = "X"
Tab_lettres(19) = "Y"
Tab_lettres(20) = "Z"
Tab_lettres(21) = "AA"
Tab_lettres(22) = "AB"
Tab_lettres(23) = "AC"
Tab_lettres(24) = "AD"
Tab_lettres(25) = "AE"
Tab_lettres(26) = "AF"
Tab_lettres(27) = "AG"

' Lecture entête feuille Funds

ISIN = Sheets("Funds").Range("A1").Value
Funds = Sheets("Funds").Range("B1").Value
Subs_Funds = Sheets("Funds").Range("C1").Value
Share_classe = Sheets("Funds").Range("D1").Value
Type_share = Sheets("Funds").Range("E1").Value
launch_date = Sheets("Funds").Range("F1").Value

' remplissage tableau pays

Tab_pays(1) = Sheets("Funds").Range("G1").Value
Tab_pays(2) = Sheets("Funds").Range("H1").Value
Tab_pays(3) = Sheets("Funds").Range("I1").Value
Tab_pays(4) = Sheets("Funds").Range("J1").Value
Tab_pays(5) = Sheets("Funds").Range("K1").Value
Tab_pays(6) = Sheets("Funds").Range("L1").Value
Tab_pays(7) = Sheets("Funds").Range("M1").Value
Tab_pays(8) = Sheets("Funds").Range("N1").Value
Tab_pays(9) = Sheets("Funds").Range("O1").Value
Tab_pays(10) = Sheets("Funds").Range("P1").Value
Tab_pays(11) = Sheets("Funds").Range("Q1").Value
Tab_pays(12) = Sheets("Funds").Range("R1").Value
Tab_pays(13) = Sheets("Funds").Range("S1").Value
Tab_pays(14) = Sheets("Funds").Range("T1").Value
Tab_pays(15) = Sheets("Funds").Range("U1").Value
Tab_pays(16) = Sheets("Funds").Range("V1").Value
Tab_pays(17) = Sheets("Funds").Range("W1").Value
Tab_pays(18) = Sheets("Funds").Range("X1").Value
Tab_pays(19) = Sheets("Funds").Range("Y1").Value
Tab_pays(20) = Sheets("Funds").Range("Z1").Value
Tab_pays(21) = Sheets("Funds").Range("AA1").Value
Tab_pays(22) = Sheets("Funds").Range("AB1").Value
Tab_pays(23) = Sheets("Funds").Range("AC1").Value
Tab_pays(24) = Sheets("Funds").Range("AD1").Value
Tab_pays(25) = Sheets("Funds").Range("AE1").Value
Tab_pays(26) = Sheets("Funds").Range("AF1").Value
Tab_pays(27) = Sheets("Funds").Range("AG1").Value

' Lecture entête feuille Media

Country_pub = Sheets("Media").Range("B1").Value
Media_designa = Sheets("Media").Range("C1").Value
Pub_Share = Sheets("Media").Range("D1").Value
Pub_Type_share = Sheets("Media").Range("E1").Value

' Copie de l'entête dans la feuille résult

Sheets("résult").Range("a1") = ISIN
Sheets("résult").Range("b1") = Funds
Sheets("résult").Range("c1") = Subs_Funds
Sheets("résult").Range("d1") = Share_classe
Sheets("résult").Range("e1") = Type_share
Sheets("résult").Range("f1") = launch_date
Sheets("résult").Range("g1") = Country_pub
Sheets("résult").Range("h1") = Media_designa
Sheets("résult").Range("i1") = Pub_Share
Sheets("résult").Range("j1") = Pub_Type_share

cpt_funds = 2 ' position première ligne utile dans feuille Funds
cpt_media = 2 ' position première ligne utile dans feuille Media
ligne_courante = cpt_funds 'position ligne courante dans feuille
résult

' faire tant que Ax de la feuille Funds n'est pas vide

Do While Sheets("Funds").Range("a" & cpt_funds).Text <> ""

'recherche des médias de chaque pays

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i)
Then

'and if sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value

Sheets("résult").Range("a" & ligne_courante) =
Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) =
Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) =
Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) =
Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) =
Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) =
Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante) =
Sheets("media").Range("c" & cpt_media)
Sheets("résult").Range("i" & ligne_courante) =
Sheets("media").Range("d" & cpt_media)
Sheets("résult").Range("j" & ligne_courante) =
Sheets("media").Range("e" & cpt_media)
ligne_courante = ligne_courante + 1
End If

cpt_media = cpt_media + 1

Loop

cpt_media = 2

End If

Next

cpt_funds = cpt_funds + 1

Loop

'
End Sub


Avatar
FFO
Salut à toi

Je te propose ces allègements

Pour :

Tab_lettres(1) = "G"
Tab_lettres(2) = "H"
Tab_lettres(3) = "I"
Tab_lettres(4) = "J"
Tab_lettres(5) = "K"
Tab_lettres(6) = "L"
Tab_lettres(7) = "M"
Tab_lettres(8) = "N"
Tab_lettres(9) = "O"
Tab_lettres(10) = "P"
Tab_lettres(11) = "Q"
Tab_lettres(12) = "R"
Tab_lettres(13) = "S"
Tab_lettres(14) = "T"
Tab_lettres(15) = "U"
Tab_lettres(16) = "V"
Tab_lettres(17) = "W"
Tab_lettres(18) = "X"
Tab_lettres(19) = "Y"
Tab_lettres(20) = "Z"
Tab_lettres(21) = "AA"
Tab_lettres(22) = "AB"
Tab_lettres(23) = "AC"
Tab_lettres(24) = "AD"
Tab_lettres(25) = "AE"
Tab_lettres(26) = "AF"
Tab_lettres(27) = "AG"

Et

Tab_pays(1) = Sheets("Funds").Range("G1").Value
Tab_pays(2) = Sheets("Funds").Range("H1").Value
Tab_pays(3) = Sheets("Funds").Range("I1").Value
Tab_pays(4) = Sheets("Funds").Range("J1").Value
Tab_pays(5) = Sheets("Funds").Range("K1").Value
Tab_pays(6) = Sheets("Funds").Range("L1").Value
Tab_pays(7) = Sheets("Funds").Range("M1").Value
Tab_pays(8) = Sheets("Funds").Range("N1").Value
Tab_pays(9) = Sheets("Funds").Range("O1").Value
Tab_pays(10) = Sheets("Funds").Range("P1").Value
Tab_pays(11) = Sheets("Funds").Range("Q1").Value
Tab_pays(12) = Sheets("Funds").Range("R1").Value
Tab_pays(13) = Sheets("Funds").Range("S1").Value
Tab_pays(14) = Sheets("Funds").Range("T1").Value
Tab_pays(15) = Sheets("Funds").Range("U1").Value
Tab_pays(16) = Sheets("Funds").Range("V1").Value
Tab_pays(17) = Sheets("Funds").Range("W1").Value
Tab_pays(18) = Sheets("Funds").Range("X1").Value
Tab_pays(19) = Sheets("Funds").Range("Y1").Value
Tab_pays(20) = Sheets("Funds").Range("Z1").Value
Tab_pays(21) = Sheets("Funds").Range("AA1").Value
Tab_pays(22) = Sheets("Funds").Range("AB1").Value
Tab_pays(23) = Sheets("Funds").Range("AC1").Value
Tab_pays(24) = Sheets("Funds").Range("AD1").Value
Tab_pays(25) = Sheets("Funds").Range("AE1").Value
Tab_pays(26) = Sheets("Funds").Range("AF1").Value
Tab_pays(27) = Sheets("Funds").Range("AG1").Value
Je te suggère :

Donnée = "GHIJKLMNOPQRSTUVWXYZABCDEFG"
For i = 1 To 27
Tab_pays(i) = Sheets("Funds").Range("F1").Offset(0, i).Value
If i < 21 Then
Tab_lettres (i) = Mid(Donnée, i, 1)
Else
Tab_lettres (i) = "A" & Mid(Donnée, i, 1)
End If
Next

C'est plus court pour un même résultat

Concernant tes conditions :

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i)
Then

'and if sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value

Je mettrai :

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then

A tester !!!

Pour :

ISIN = Sheets("Funds").Range("A1").Value
Funds = Sheets("Funds").Range("B1").Value
Subs_Funds = Sheets("Funds").Range("C1").Value
Share_classe = Sheets("Funds").Range("D1").Value
Type_share = Sheets("Funds").Range("E1").Value
launch_date = Sheets("Funds").Range("F1").Value

Et

Country_pub = Sheets("Media").Range("B1").Value
Media_designa = Sheets("Media").Range("C1").Value
Pub_Share = Sheets("Media").Range("D1").Value
Pub_Type_share = Sheets("Media").Range("E1").Value


Que tu rapelles ici :

Sheets("résult").Range("a1") = ISIN
Sheets("résult").Range("b1") = Funds
Sheets("résult").Range("c1") = Subs_Funds
Sheets("résult").Range("d1") = Share_classe
Sheets("résult").Range("e1") = Type_share
Sheets("résult").Range("f1") = launch_date
Sheets("résult").Range("g1") = Country_pub
Sheets("résult").Range("h1") = Media_designa
Sheets("résult").Range("i1") = Pub_Share
Sheets("résult").Range("j1") = Pub_Type_share

Pourquoi ne pas mettre directement ces lignes :

Sheets("résult").Range("a1") = Sheets("Funds").Range("A1").Value
Sheets("résult").Range("b1") = Sheets("Funds").Range("B1").Value
Sheets("résult").Range("c1") = Sheets("Funds").Range("C1").Value
Sheets("résult").Range("d1") = Sheets("Funds").Range("D1").Value
Sheets("résult").Range("e1") = Sheets("Funds").Range("E1").Value
Sheets("résult").Range("f1") = Sheets("Funds").Range("F1").Value
Sheets("résult").Range("g1") = Sheets("Media").Range("B1").Value
Sheets("résult").Range("h1") = Sheets("Media").Range("C1").Value
Sheets("résult").Range("i1") = Sheets("Media").Range("D1").Value
Sheets("résult").Range("j1") = Sheets("Media").Range("E1").Value

En remplacement de toutes les autres !!!!


Pour :

Sheets("résult").Range("a" & ligne_courante) =
Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) =
Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) =
Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) =
Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) =
Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) =
Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante) =
Sheets("media").Range("c" & cpt_media)
Sheets("résult").Range("i" & ligne_courante) =
Sheets("media").Range("d" & cpt_media)
Sheets("résult").Range("j" & ligne_courante) =
Sheets("media").Range("e" & cpt_media)
ligne_courante = ligne_courante + 1


Je te suggére :

Sheets("résult").Range("a" & ligne_courante, "f" & ligne_courante) .Value =
Sheets("Funds").Range("a" & ligne_courante, "f" & ligne_courante) .Value
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante, "j" & ligne_courante) .Value =
Sheets("media").Range("c" & cpt_media, "e" & cpt_media) .Value
ligne_courante = ligne_courante + 1

Ce qui donne au final :

Dim Tab_pays(30) As String ' tableau de tous les pays
Dim cpt_funds, cpt_media As Integer
Dim Tab_lettres(27) As String ' tableau des colonnes de G à AG
Donnée = "GHIJKLMNOPQRSTUVWXYZABCDEFG"
For i = 1 To 27
Tab_pays(i) = Sheets("Funds").Range("F1").Offset(0, i).Value
If i < 21 Then
Tab_lettres (i) = Mid(Donnée, i, 1)
Else
Tab_lettres (i) = "A" & Mid(Donnée, i, 1)
End If
Next
Sheets("résult").Range("a1") = Sheets("Funds").Range("A1").Value
Sheets("résult").Range("b1") = Sheets("Funds").Range("B1").Value
Sheets("résult").Range("c1") = Sheets("Funds").Range("C1").Value
Sheets("résult").Range("d1") = Sheets("Funds").Range("D1").Value
Sheets("résult").Range("e1") = Sheets("Funds").Range("E1").Value
Sheets("résult").Range("f1") = Sheets("Funds").Range("F1").Value
Sheets("résult").Range("g1") = Sheets("Media").Range("B1").Value
Sheets("résult").Range("h1") = Sheets("Media").Range("C1").Value
Sheets("résult").Range("i1") = Sheets("Media").Range("D1").Value
Sheets("résult").Range("j1") = Sheets("Media").Range("E1").Value
cpt_funds = 2 ' position première ligne utile dans feuille Funds
cpt_media = 2 ' position première ligne utile dans feuille Media
ligne_courante = cpt_funds 'position ligne courante dans feuille
résult

' faire tant que Ax de la feuille Funds n'est pas vide

Do While Sheets("Funds").Range("a" & cpt_funds).Text <> ""

'recherche des médias de chaque pays

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Sheets("résult").Range("a" & ligne_courante, "f" & ligne_courante) .Value =
Sheets("Funds").Range("a" & ligne_courante, "f" & ligne_courante) .Value
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante, "j" & ligne_courante) .Value =
Sheets("media").Range("c" & cpt_media, "e" & cpt_media) .Value
ligne_courante = ligne_courante + 1
End If

cpt_media = cpt_media + 1

Loop

cpt_media = 2

End If

Next


cpt_funds = cpt_funds + 1

Loop


J'espère que cette cure d'amaigrissement te conviendra
Dis moi !!!



Bonsoir a tous,

Malgré la mine d'or présente sur le forum, je ne dois pas utiliser les
bons mots clés car je ne trouve pas la reponse...

J'utilise le vba assez sommairement et j'aimerai developper mes
connaissances surtout que là j'en ai vraiment besoin pour le boulot:

(je vous passe l'etape du formulaire et tout que j'etais pas peu fier
d'avoir mis en place)

Voilà j'aimerai copier une ligne (table "media") suivant plusieurs
critères d'une autre ligne d'une autre worksheet (inséré via le
formulaire) "fonds".

Le choix de la ligne à copier doit se faire en fonction de trois
criteres.

Pour faire simple, j'aimerai la copie de la ligne fonds + la copie de
la ligne media (a la suite sur la meme ligne) sur une troisieme
feuille SI et seulement SI les trois criteres present dans les deux
lignes fonds et media sont égaux.

Pour l'instant ca marche pour le critere pays avec ce code mais je ne
sais pas comment inclure les autres criteres (avec un and? comment
utiliser cela? mon code n'est pas trop lourd?):

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i)
Then



Sheets("résult").Range("a" & ligne_courante) > Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) > Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) > Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) > Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) > Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) > Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante) > Sheets("media").Range("c" & cpt_media)
Sheets("résult").Range("i" & ligne_courante) > Sheets("media").Range("d" & cpt_media)
Sheets("résult").Range("j" & ligne_courante) > Sheets("media").Range("e" & cpt_media)
ligne_courante = ligne_courante + 1
End If

cpt_media = cpt_media + 1

Loop

cpt_media = 2

End If

Next


cpt_funds = cpt_funds + 1

Loop



(pour ceux qui veulent l'integralité du code pour peut etre mieux
comprendre ma manip)
-------------------------------------------------------------------------------------------------------------------------------

Sub Macro1()
'

'

Dim Tab_pays(30) As String ' tableau de tous les pays
Dim cpt_funds, cpt_media As Integer
Dim Tab_lettres(27) As String ' tableau des colonnes de G à AG

Tab_lettres(1) = "G"
Tab_lettres(2) = "H"
Tab_lettres(3) = "I"
Tab_lettres(4) = "J"
Tab_lettres(5) = "K"
Tab_lettres(6) = "L"
Tab_lettres(7) = "M"
Tab_lettres(8) = "N"
Tab_lettres(9) = "O"
Tab_lettres(10) = "P"
Tab_lettres(11) = "Q"
Tab_lettres(12) = "R"
Tab_lettres(13) = "S"
Tab_lettres(14) = "T"
Tab_lettres(15) = "U"
Tab_lettres(16) = "V"
Tab_lettres(17) = "W"
Tab_lettres(18) = "X"
Tab_lettres(19) = "Y"
Tab_lettres(20) = "Z"
Tab_lettres(21) = "AA"
Tab_lettres(22) = "AB"
Tab_lettres(23) = "AC"
Tab_lettres(24) = "AD"
Tab_lettres(25) = "AE"
Tab_lettres(26) = "AF"
Tab_lettres(27) = "AG"

' Lecture entête feuille Funds

ISIN = Sheets("Funds").Range("A1").Value
Funds = Sheets("Funds").Range("B1").Value
Subs_Funds = Sheets("Funds").Range("C1").Value
Share_classe = Sheets("Funds").Range("D1").Value
Type_share = Sheets("Funds").Range("E1").Value
launch_date = Sheets("Funds").Range("F1").Value

' remplissage tableau pays

Tab_pays(1) = Sheets("Funds").Range("G1").Value
Tab_pays(2) = Sheets("Funds").Range("H1").Value
Tab_pays(3) = Sheets("Funds").Range("I1").Value
Tab_pays(4) = Sheets("Funds").Range("J1").Value
Tab_pays(5) = Sheets("Funds").Range("K1").Value
Tab_pays(6) = Sheets("Funds").Range("L1").Value
Tab_pays(7) = Sheets("Funds").Range("M1").Value
Tab_pays(8) = Sheets("Funds").Range("N1").Value
Tab_pays(9) = Sheets("Funds").Range("O1").Value
Tab_pays(10) = Sheets("Funds").Range("P1").Value
Tab_pays(11) = Sheets("Funds").Range("Q1").Value
Tab_pays(12) = Sheets("Funds").Range("R1").Value
Tab_pays(13) = Sheets("Funds").Range("S1").Value
Tab_pays(14) = Sheets("Funds").Range("T1").Value
Tab_pays(15) = Sheets("Funds").Range("U1").Value
Tab_pays(16) = Sheets("Funds").Range("V1").Value
Tab_pays(17) = Sheets("Funds").Range("W1").Value
Tab_pays(18) = Sheets("Funds").Range("X1").Value
Tab_pays(19) = Sheets("Funds").Range("Y1").Value
Tab_pays(20) = Sheets("Funds").Range("Z1").Value
Tab_pays(21) = Sheets("Funds").Range("AA1").Value
Tab_pays(22) = Sheets("Funds").Range("AB1").Value
Tab_pays(23) = Sheets("Funds").Range("AC1").Value
Tab_pays(24) = Sheets("Funds").Range("AD1").Value
Tab_pays(25) = Sheets("Funds").Range("AE1").Value
Tab_pays(26) = Sheets("Funds").Range("AF1").Value
Tab_pays(27) = Sheets("Funds").Range("AG1").Value

' Lecture entête feuille Media

Country_pub = Sheets("Media").Range("B1").Value
Media_designa = Sheets("Media").Range("C1").Value
Pub_Share = Sheets("Media").Range("D1").Value
Pub_Type_share = Sheets("Media").Range("E1").Value

' Copie de l'entête dans la feuille résult

Sheets("résult").Range("a1") = ISIN
Sheets("résult").Range("b1") = Funds
Sheets("résult").Range("c1") = Subs_Funds
Sheets("résult").Range("d1") = Share_classe
Sheets("résult").Range("e1") = Type_share
Sheets("résult").Range("f1") = launch_date
Sheets("résult").Range("g1") = Country_pub
Sheets("résult").Range("h1") = Media_designa
Sheets("résult").Range("i1") = Pub_Share
Sheets("résult").Range("j1") = Pub_Type_share

cpt_funds = 2 ' position première ligne utile dans feuille Funds
cpt_media = 2 ' position première ligne utile dans feuille Media
ligne_courante = cpt_funds 'position ligne courante dans feuille
résult

' faire tant que Ax de la feuille Funds n'est pas vide

Do While Sheets("Funds").Range("a" & cpt_funds).Text <> ""

'recherche des médias de chaque pays

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i)
Then

'and if sheets("media").range("d" & cpt_media).text > Sheets("Funds").Range("D1").Value

Sheets("résult").Range("a" & ligne_courante) > Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) > Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) > Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) > Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) > Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) > Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante) > Sheets("media").Range("c" & cpt_media)
Sheets("résult").Range("i" & ligne_courante) > Sheets("media").Range("d" & cpt_media)
Sheets("résult").Range("j" & ligne_courante) > Sheets("media").Range("e" & cpt_media)
ligne_courante = ligne_courante + 1
End If

cpt_media = cpt_media + 1

Loop

cpt_media = 2

End If

Next


cpt_funds = cpt_funds + 1

Loop


'
End Sub




Avatar
lglux
Bonjour FFO

Merci pour la cure d'amaigrissement c'est bien plus joli, je vais plus
tard me pencher et en tirer les lecons.

Bon par contre plus rien ne s'affiche dans la feuille result, a croire
que le deuxieme critere avec le "and" passe mal, bizarre

MERCI !!


On 10 août, 10:29, lglux wrote:
Bonjour Daniel,

J'ai pas osé mettre un fichier car j'avais lu la netiquette de ce
forum, certes datée de 2003..

http://cjoint.com/?ikkARtRCiO

sur la feuille result j'ai mis les infos pour lancer la macro:

1. Appuyer sur le bouton en haut a droite
2. remplir les champs
3. input data puis valider
4. resultat dans cette feuille, j'aimerai que la colonne D = colonne I
ou "*"

MERCI !!

On 10 août, 09:53, "Daniel" wrote:



Bonjour.
C'est difficile de se faire une idée, mais, oui, avec des "and", ça doit le
faire. Sinon, le mieux est de télécharger ton classeur surwww.cjoin t.comet
de poster l'adresse générée. N'oublie pas de remplacer les éven tuelles
données confidentielles
Cordialement.
Daniel
"lglux" a écrit dans le message de news:

Bonsoir a tous,

Malgré la mine d'or présente sur le forum, je ne dois pas utiliser les
bons mots clés car je ne trouve pas la reponse...

J'utilise le vba assez sommairement et j'aimerai developper mes
connaissances surtout que là j'en ai vraiment besoin pour le boulot:

(je vous passe l'etape du formulaire et tout que j'etais pas peu fier
d'avoir mis en place)

Voilà j'aimerai copier une ligne (table "media") suivant plusieurs
critères d'une autre ligne d'une autre worksheet (inséré via le
formulaire) "fonds".

Le choix de la ligne à copier doit se faire en fonction de trois
criteres.

Pour faire simple, j'aimerai la copie de la ligne fonds + la copie de
la ligne media (a la suite sur la meme ligne) sur une troisieme
feuille SI et seulement SI les trois criteres present dans les deux
lignes fonds et media sont égaux.

Pour l'instant ca marche pour le critere pays avec ce code mais je ne
sais pas comment inclure les autres criteres (avec un and? comment
utiliser cela? mon code n'est pas trop lourd?):

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i)
Then

Sheets("résult").Range("a" & ligne_courante) =
Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) =
Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) =
Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) =
Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) =
Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) =
Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante) =
Sheets("media").Range("c" & cpt_media)
Sheets("résult").Range("i" & ligne_courante) =
Sheets("media").Range("d" & cpt_media)
Sheets("résult").Range("j" & ligne_courante) =
Sheets("media").Range("e" & cpt_media)
ligne_courante = ligne_courante + 1
End If

cpt_media = cpt_media + 1

Loop

cpt_media = 2

End If

Next

cpt_funds = cpt_funds + 1

Loop

(pour ceux qui veulent l'integralité du code pour peut etre mieux
comprendre ma manip)
----------------------------------------------------------------------- ----­­----------------------------------------------------

Sub Macro1()
'

'

Dim Tab_pays(30) As String ' tableau de tous les pays
Dim cpt_funds, cpt_media As Integer
Dim Tab_lettres(27) As String ' tableau des colonnes de G à AG

Tab_lettres(1) = "G"
Tab_lettres(2) = "H"
Tab_lettres(3) = "I"
Tab_lettres(4) = "J"
Tab_lettres(5) = "K"
Tab_lettres(6) = "L"
Tab_lettres(7) = "M"
Tab_lettres(8) = "N"
Tab_lettres(9) = "O"
Tab_lettres(10) = "P"
Tab_lettres(11) = "Q"
Tab_lettres(12) = "R"
Tab_lettres(13) = "S"
Tab_lettres(14) = "T"
Tab_lettres(15) = "U"
Tab_lettres(16) = "V"
Tab_lettres(17) = "W"
Tab_lettres(18) = "X"
Tab_lettres(19) = "Y"
Tab_lettres(20) = "Z"
Tab_lettres(21) = "AA"
Tab_lettres(22) = "AB"
Tab_lettres(23) = "AC"
Tab_lettres(24) = "AD"
Tab_lettres(25) = "AE"
Tab_lettres(26) = "AF"
Tab_lettres(27) = "AG"

' Lecture entête feuille Funds

ISIN = Sheets("Funds").Range("A1").Value
Funds = Sheets("Funds").Range("B1").Value
Subs_Funds = Sheets("Funds").Range("C1").Value
Share_classe = Sheets("Funds").Range("D1").Value
Type_share = Sheets("Funds").Range("E1").Value
launch_date = Sheets("Funds").Range("F1").Value

' remplissage tableau pays

Tab_pays(1) = Sheets("Funds").Range("G1").Value
Tab_pays(2) = Sheets("Funds").Range("H1").Value
Tab_pays(3) = Sheets("Funds").Range("I1").Value
Tab_pays(4) = Sheets("Funds").Range("J1").Value
Tab_pays(5) = Sheets("Funds").Range("K1").Value
Tab_pays(6) = Sheets("Funds").Range("L1").Value
Tab_pays(7) = Sheets("Funds").Range("M1").Value
Tab_pays(8) = Sheets("Funds").Range("N1").Value
Tab_pays(9) = Sheets("Funds").Range("O1").Value
Tab_pays(10) = Sheets("Funds").Range("P1").Value
Tab_pays(11) = Sheets("Funds").Range("Q1").Value
Tab_pays(12) = Sheets("Funds").Range("R1").Value
Tab_pays(13) = Sheets("Funds").Range("S1").Value
Tab_pays(14) = Sheets("Funds").Range("T1").Value
Tab_pays(15) = Sheets("Funds").Range("U1").Value
Tab_pays(16) = Sheets("Funds").Range("V1").Value
Tab_pays(17) = Sheets("Funds").Range("W1").Value
Tab_pays(18) = Sheets("Funds").Range("X1").Value
Tab_pays(19) = Sheets("Funds").Range("Y1").Value
Tab_pays(20) = Sheets("Funds").Range("Z1").Value
Tab_pays(21) = Sheets("Funds").Range("AA1").Value
Tab_pays(22) = Sheets("Funds").Range("AB1").Value
Tab_pays(23) = Sheets("Funds").Range("AC1").Value
Tab_pays(24) = Sheets("Funds").Range("AD1").Value
Tab_pays(25) = Sheets("Funds").Range("AE1").Value
Tab_pays(26) = Sheets("Funds").Range("AF1").Value
Tab_pays(27) = Sheets("Funds").Range("AG1").Value

' Lecture entête feuille Media

Country_pub = Sheets("Media").Range("B1").Value
Media_designa = Sheets("Media").Range("C1").Value
Pub_Share = Sheets("Media").Range("D1").Value
Pub_Type_share = Sheets("Media").Range("E1").Value

' Copie de l'entête dans la feuille résult

Sheets("résult").Range("a1") = ISIN
Sheets("résult").Range("b1") = Funds
Sheets("résult").Range("c1") = Subs_Funds
Sheets("résult").Range("d1") = Share_classe
Sheets("résult").Range("e1") = Type_share
Sheets("résult").Range("f1") = launch_date
Sheets("résult").Range("g1") = Country_pub
Sheets("résult").Range("h1") = Media_designa
Sheets("résult").Range("i1") = Pub_Share
Sheets("résult").Range("j1") = Pub_Type_share

cpt_funds = 2 ' position première ligne utile dans feuille Funds
cpt_media = 2 ' position première ligne utile dans feuille Media
ligne_courante = cpt_funds 'position ligne courante dans feuille
résult

' faire tant que Ax de la feuille Funds n'est pas vide

Do While Sheets("Funds").Range("a" & cpt_funds).Text <> ""

'recherche des médias de chaque pays

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i)
Then

'and if sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value

Sheets("résult").Range("a" & ligne_courante) =
Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) =
Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) =
Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) =
Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) =
Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) =
Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante) =
Sheets("media").Range("c" & cpt_media)
Sheets("résult").Range("i" & ligne_courante) =
Sheets("media").Range("d" & cpt_media)
Sheets("résult").Range("j" & ligne_courante) =
Sheets("media").Range("e" & cpt_media)
ligne_courante = ligne_courante + 1
End If

cpt_media = cpt_media + 1

Loop

cpt_media = 2

End If

Next

cpt_funds = cpt_funds + 1

Loop

'
End Sub- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
lglux
Hi FFO,

Je ne sais pas pourquoi ca cloche avec ton code mais dans la feuille
result, la partie input concernant le fonds ne se rempli qu'une fois
dans la premiere ligne, et pas autant de fois que de lignes cree avec
les elements media

donc cela pose probleme pour un deuxieme input de données, car les
données du fonds vont se coller en deuxieme lignes, alors que en face
les données media sont deja presente mais concernant le premier input
(je sais pas si je suis clair)

faut que je regarde mais une bonne partie des allegements sont
utilisable



On 10 août, 10:38, FFO wrote:
Salut à toi

Je te propose ces allègements

Pour :

Tab_lettres(1) = "G"
Tab_lettres(2) = "H"
Tab_lettres(3) = "I"
Tab_lettres(4) = "J"
Tab_lettres(5) = "K"
Tab_lettres(6) = "L"
Tab_lettres(7) = "M"
Tab_lettres(8) = "N"
Tab_lettres(9) = "O"
Tab_lettres(10) = "P"
Tab_lettres(11) = "Q"
Tab_lettres(12) = "R"
Tab_lettres(13) = "S"
Tab_lettres(14) = "T"
Tab_lettres(15) = "U"
Tab_lettres(16) = "V"
Tab_lettres(17) = "W"
Tab_lettres(18) = "X"
Tab_lettres(19) = "Y"
Tab_lettres(20) = "Z"
Tab_lettres(21) = "AA"
Tab_lettres(22) = "AB"
Tab_lettres(23) = "AC"
Tab_lettres(24) = "AD"
Tab_lettres(25) = "AE"
Tab_lettres(26) = "AF"
Tab_lettres(27) = "AG"

Et

Tab_pays(1) = Sheets("Funds").Range("G1").Value
Tab_pays(2) = Sheets("Funds").Range("H1").Value
Tab_pays(3) = Sheets("Funds").Range("I1").Value
Tab_pays(4) = Sheets("Funds").Range("J1").Value
Tab_pays(5) = Sheets("Funds").Range("K1").Value
Tab_pays(6) = Sheets("Funds").Range("L1").Value
Tab_pays(7) = Sheets("Funds").Range("M1").Value
Tab_pays(8) = Sheets("Funds").Range("N1").Value
Tab_pays(9) = Sheets("Funds").Range("O1").Value
Tab_pays(10) = Sheets("Funds").Range("P1").Value
Tab_pays(11) = Sheets("Funds").Range("Q1").Value
Tab_pays(12) = Sheets("Funds").Range("R1").Value
Tab_pays(13) = Sheets("Funds").Range("S1").Value
Tab_pays(14) = Sheets("Funds").Range("T1").Value
Tab_pays(15) = Sheets("Funds").Range("U1").Value
Tab_pays(16) = Sheets("Funds").Range("V1").Value
Tab_pays(17) = Sheets("Funds").Range("W1").Value
Tab_pays(18) = Sheets("Funds").Range("X1").Value
Tab_pays(19) = Sheets("Funds").Range("Y1").Value
Tab_pays(20) = Sheets("Funds").Range("Z1").Value
Tab_pays(21) = Sheets("Funds").Range("AA1").Value
Tab_pays(22) = Sheets("Funds").Range("AB1").Value
Tab_pays(23) = Sheets("Funds").Range("AC1").Value
Tab_pays(24) = Sheets("Funds").Range("AD1").Value
Tab_pays(25) = Sheets("Funds").Range("AE1").Value
Tab_pays(26) = Sheets("Funds").Range("AF1").Value
Tab_pays(27) = Sheets("Funds").Range("AG1").Value
Je te suggère :

Donnée = "GHIJKLMNOPQRSTUVWXYZABCDEFG"
For i = 1 To 27
Tab_pays(i) = Sheets("Funds").Range("F1").Offset(0, i).Value
If i < 21 Then
Tab_lettres (i) = Mid(Donnée, i, 1)
Else
Tab_lettres (i) = "A" & Mid(Donnée, i, 1)
End If
Next

C'est plus court pour un même résultat

Concernant tes conditions :

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i)
Then

'and if sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value

Je mettrai :

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then

A tester !!!

Pour :

ISIN = Sheets("Funds").Range("A1").Value
Funds = Sheets("Funds").Range("B1").Value
Subs_Funds = Sheets("Funds").Range("C1").Value
Share_classe = Sheets("Funds").Range("D1").Value
Type_share = Sheets("Funds").Range("E1").Value
launch_date = Sheets("Funds").Range("F1").Value

Et

Country_pub = Sheets("Media").Range("B1").Value
Media_designa = Sheets("Media").Range("C1").Value
Pub_Share = Sheets("Media").Range("D1").Value
Pub_Type_share = Sheets("Media").Range("E1").Value

Que tu rapelles ici :

Sheets("résult").Range("a1") = ISIN
Sheets("résult").Range("b1") = Funds
Sheets("résult").Range("c1") = Subs_Funds
Sheets("résult").Range("d1") = Share_classe
Sheets("résult").Range("e1") = Type_share
Sheets("résult").Range("f1") = launch_date
Sheets("résult").Range("g1") = Country_pub
Sheets("résult").Range("h1") = Media_designa
Sheets("résult").Range("i1") = Pub_Share
Sheets("résult").Range("j1") = Pub_Type_share

Pourquoi ne pas mettre directement ces lignes :

Sheets("résult").Range("a1") = Sheets("Funds").Range("A1").Value
Sheets("résult").Range("b1") = Sheets("Funds").Range("B1").Value
Sheets("résult").Range("c1") = Sheets("Funds").Range("C1").Value
Sheets("résult").Range("d1") = Sheets("Funds").Range("D1").Value
Sheets("résult").Range("e1") = Sheets("Funds").Range("E1").Value
Sheets("résult").Range("f1") = Sheets("Funds").Range("F1").Value
Sheets("résult").Range("g1") = Sheets("Media").Range("B1").Value
Sheets("résult").Range("h1") = Sheets("Media").Range("C1").Value
Sheets("résult").Range("i1") = Sheets("Media").Range("D1").Value
Sheets("résult").Range("j1") = Sheets("Media").Range("E1").Value

En remplacement de toutes les autres !!!!

Pour :

Sheets("résult").Range("a" & ligne_courante) =
Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) =
Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) =
Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) =
Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) =
Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) =
Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante) =
Sheets("media").Range("c" & cpt_media)
Sheets("résult").Range("i" & ligne_courante) =
Sheets("media").Range("d" & cpt_media)
Sheets("résult").Range("j" & ligne_courante) =
Sheets("media").Range("e" & cpt_media)
ligne_courante = ligne_courante + 1

Je te suggére :

Sheets("résult").Range("a" & ligne_courante, "f" & ligne_courante) .Val ue =
Sheets("Funds").Range("a" & ligne_courante, "f" & ligne_courante) .Value
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante, "j" & ligne_courante) .Val ue =
Sheets("media").Range("c" & cpt_media, "e" & cpt_media) .Value
ligne_courante = ligne_courante + 1

Ce qui donne au final :

Dim Tab_pays(30) As String ' tableau de tous les pays
Dim cpt_funds, cpt_media As Integer
Dim Tab_lettres(27) As String ' tableau des colonnes de G à AG
Donnée = "GHIJKLMNOPQRSTUVWXYZABCDEFG"
For i = 1 To 27
Tab_pays(i) = Sheets("Funds").Range("F1").Offset(0, i).Value
If i < 21 Then
Tab_lettres (i) = Mid(Donnée, i, 1)
Else
Tab_lettres (i) = "A" & Mid(Donnée, i, 1)
End If
Next
Sheets("résult").Range("a1") = Sheets("Funds").Range("A1").Value
Sheets("résult").Range("b1") = Sheets("Funds").Range("B1").Value
Sheets("résult").Range("c1") = Sheets("Funds").Range("C1").Value
Sheets("résult").Range("d1") = Sheets("Funds").Range("D1").Value
Sheets("résult").Range("e1") = Sheets("Funds").Range("E1").Value
Sheets("résult").Range("f1") = Sheets("Funds").Range("F1").Value
Sheets("résult").Range("g1") = Sheets("Media").Range("B1").Value
Sheets("résult").Range("h1") = Sheets("Media").Range("C1").Value
Sheets("résult").Range("i1") = Sheets("Media").Range("D1").Value
Sheets("résult").Range("j1") = Sheets("Media").Range("E1").Value
cpt_funds = 2 ' position première ligne utile dans feuille Funds
cpt_media = 2 ' position première ligne utile dans feuille Media
ligne_courante = cpt_funds 'position ligne courante dans feuille
résult

' faire tant que Ax de la feuille Funds n'est pas vide

Do While Sheets("Funds").Range("a" & cpt_funds).Text <> ""

'recherche des médias de chaque pays

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Sheets("résult").Range("a" & ligne_courante, "f" & ligne_courante) .Val ue =
Sheets("Funds").Range("a" & ligne_courante, "f" & ligne_courante) .Value
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante, "j" & ligne_courante) .Val ue =
Sheets("media").Range("c" & cpt_media, "e" & cpt_media) .Value
ligne_courante = ligne_courante + 1
End If

cpt_media = cpt_media + 1

Loop

cpt_media = 2

End If

Next

cpt_funds = cpt_funds + 1

Loop

J'espère que cette cure d'amaigrissement te conviendra
Dis moi !!!




Bonsoir a tous,

Malgré la mine d'or présente sur le forum, je ne dois pas utiliser les
bons mots clés car je ne trouve pas la reponse...

J'utilise le vba assez sommairement et j'aimerai developper mes
connaissances surtout que là j'en ai vraiment besoin pour le boulot:

(je vous passe l'etape du formulaire et tout que j'etais pas peu fier
d'avoir mis en place)

Voilà j'aimerai copier une ligne (table "media") suivant plusieurs
critères d'une autre ligne d'une autre worksheet (inséré via le
formulaire) "fonds".

Le choix de la ligne à copier doit se faire en fonction de trois
criteres.

Pour faire simple, j'aimerai la copie de la ligne fonds + la copie de
la ligne media (a la suite sur la meme ligne) sur une troisieme
feuille SI et seulement SI les trois criteres present dans les deux
lignes fonds et media sont égaux.

Pour l'instant ca marche pour le critere pays avec ce code mais je ne
sais pas comment inclure les autres criteres (avec un and? comment
utiliser cela? mon code n'est pas trop lourd?):

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i)
Then

Sheets("résult").Range("a" & ligne_courante) =
Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) =
Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) =
Sheets("Funds").Range("c" & cpt_funds)


...

plus de détails »- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -



Avatar
FFO
Rebonjours à toi

Peux tu me transmettre la partie du code qui fonctionne mal avec l'attendu
et l'obtenu

Merci d'avance


Bonjour FFO

Merci pour la cure d'amaigrissement c'est bien plus joli, je vais plus
tard me pencher et en tirer les lecons.

Bon par contre plus rien ne s'affiche dans la feuille result, a croire
que le deuxieme critere avec le "and" passe mal, bizarre

MERCI !!


On 10 août, 10:29, lglux wrote:
Bonjour Daniel,

J'ai pas osé mettre un fichier car j'avais lu la netiquette de ce
forum, certes datée de 2003..

http://cjoint.com/?ikkARtRCiO

sur la feuille result j'ai mis les infos pour lancer la macro:

1. Appuyer sur le bouton en haut a droite
2. remplir les champs
3. input data puis valider
4. resultat dans cette feuille, j'aimerai que la colonne D = colonne I
ou "*"

MERCI !!

On 10 août, 09:53, "Daniel" wrote:



Bonjour.
C'est difficile de se faire une idée, mais, oui, avec des "and", ça doit le
faire. Sinon, le mieux est de télécharger ton classeur surwww.cjoint.comet
de poster l'adresse générée. N'oublie pas de remplacer les éventuelles
données confidentielles
Cordialement.
Daniel
"lglux" a écrit dans le message de news:

Bonsoir a tous,

Malgré la mine d'or présente sur le forum, je ne dois pas utiliser les
bons mots clés car je ne trouve pas la reponse...

J'utilise le vba assez sommairement et j'aimerai developper mes
connaissances surtout que là j'en ai vraiment besoin pour le boulot:

(je vous passe l'etape du formulaire et tout que j'etais pas peu fier
d'avoir mis en place)

Voilà j'aimerai copier une ligne (table "media") suivant plusieurs
critères d'une autre ligne d'une autre worksheet (inséré via le
formulaire) "fonds".

Le choix de la ligne à copier doit se faire en fonction de trois
criteres.

Pour faire simple, j'aimerai la copie de la ligne fonds + la copie de
la ligne media (a la suite sur la meme ligne) sur une troisieme
feuille SI et seulement SI les trois criteres present dans les deux
lignes fonds et media sont égaux.

Pour l'instant ca marche pour le critere pays avec ce code mais je ne
sais pas comment inclure les autres criteres (avec un and? comment
utiliser cela? mon code n'est pas trop lourd?):

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i)
Then

Sheets("résult").Range("a" & ligne_courante) > > > Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) > > > Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) > > > Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) > > > Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) > > > Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) > > > Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante) > > > Sheets("media").Range("c" & cpt_media)
Sheets("résult").Range("i" & ligne_courante) > > > Sheets("media").Range("d" & cpt_media)
Sheets("résult").Range("j" & ligne_courante) > > > Sheets("media").Range("e" & cpt_media)
ligne_courante = ligne_courante + 1
End If

cpt_media = cpt_media + 1

Loop

cpt_media = 2

End If

Next

cpt_funds = cpt_funds + 1

Loop

(pour ceux qui veulent l'integralité du code pour peut etre mieux
comprendre ma manip)
---------------------------------------------------------------------------­­----------------------------------------------------

Sub Macro1()
'

'

Dim Tab_pays(30) As String ' tableau de tous les pays
Dim cpt_funds, cpt_media As Integer
Dim Tab_lettres(27) As String ' tableau des colonnes de G à AG

Tab_lettres(1) = "G"
Tab_lettres(2) = "H"
Tab_lettres(3) = "I"
Tab_lettres(4) = "J"
Tab_lettres(5) = "K"
Tab_lettres(6) = "L"
Tab_lettres(7) = "M"
Tab_lettres(8) = "N"
Tab_lettres(9) = "O"
Tab_lettres(10) = "P"
Tab_lettres(11) = "Q"
Tab_lettres(12) = "R"
Tab_lettres(13) = "S"
Tab_lettres(14) = "T"
Tab_lettres(15) = "U"
Tab_lettres(16) = "V"
Tab_lettres(17) = "W"
Tab_lettres(18) = "X"
Tab_lettres(19) = "Y"
Tab_lettres(20) = "Z"
Tab_lettres(21) = "AA"
Tab_lettres(22) = "AB"
Tab_lettres(23) = "AC"
Tab_lettres(24) = "AD"
Tab_lettres(25) = "AE"
Tab_lettres(26) = "AF"
Tab_lettres(27) = "AG"

' Lecture entête feuille Funds

ISIN = Sheets("Funds").Range("A1").Value
Funds = Sheets("Funds").Range("B1").Value
Subs_Funds = Sheets("Funds").Range("C1").Value
Share_classe = Sheets("Funds").Range("D1").Value
Type_share = Sheets("Funds").Range("E1").Value
launch_date = Sheets("Funds").Range("F1").Value

' remplissage tableau pays

Tab_pays(1) = Sheets("Funds").Range("G1").Value
Tab_pays(2) = Sheets("Funds").Range("H1").Value
Tab_pays(3) = Sheets("Funds").Range("I1").Value
Tab_pays(4) = Sheets("Funds").Range("J1").Value
Tab_pays(5) = Sheets("Funds").Range("K1").Value
Tab_pays(6) = Sheets("Funds").Range("L1").Value
Tab_pays(7) = Sheets("Funds").Range("M1").Value
Tab_pays(8) = Sheets("Funds").Range("N1").Value
Tab_pays(9) = Sheets("Funds").Range("O1").Value
Tab_pays(10) = Sheets("Funds").Range("P1").Value
Tab_pays(11) = Sheets("Funds").Range("Q1").Value
Tab_pays(12) = Sheets("Funds").Range("R1").Value
Tab_pays(13) = Sheets("Funds").Range("S1").Value
Tab_pays(14) = Sheets("Funds").Range("T1").Value
Tab_pays(15) = Sheets("Funds").Range("U1").Value
Tab_pays(16) = Sheets("Funds").Range("V1").Value
Tab_pays(17) = Sheets("Funds").Range("W1").Value
Tab_pays(18) = Sheets("Funds").Range("X1").Value
Tab_pays(19) = Sheets("Funds").Range("Y1").Value
Tab_pays(20) = Sheets("Funds").Range("Z1").Value
Tab_pays(21) = Sheets("Funds").Range("AA1").Value
Tab_pays(22) = Sheets("Funds").Range("AB1").Value
Tab_pays(23) = Sheets("Funds").Range("AC1").Value
Tab_pays(24) = Sheets("Funds").Range("AD1").Value
Tab_pays(25) = Sheets("Funds").Range("AE1").Value
Tab_pays(26) = Sheets("Funds").Range("AF1").Value
Tab_pays(27) = Sheets("Funds").Range("AG1").Value

' Lecture entête feuille Media

Country_pub = Sheets("Media").Range("B1").Value
Media_designa = Sheets("Media").Range("C1").Value
Pub_Share = Sheets("Media").Range("D1").Value
Pub_Type_share = Sheets("Media").Range("E1").Value

' Copie de l'entête dans la feuille résult

Sheets("résult").Range("a1") = ISIN
Sheets("résult").Range("b1") = Funds
Sheets("résult").Range("c1") = Subs_Funds
Sheets("résult").Range("d1") = Share_classe
Sheets("résult").Range("e1") = Type_share
Sheets("résult").Range("f1") = launch_date
Sheets("résult").Range("g1") = Country_pub
Sheets("résult").Range("h1") = Media_designa
Sheets("résult").Range("i1") = Pub_Share
Sheets("résult").Range("j1") = Pub_Type_share

cpt_funds = 2 ' position première ligne utile dans feuille Funds
cpt_media = 2 ' position première ligne utile dans feuille Media
ligne_courante = cpt_funds 'position ligne courante dans feuille
résult

' faire tant que Ax de la feuille Funds n'est pas vide

Do While Sheets("Funds").Range("a" & cpt_funds).Text <> ""

'recherche des médias de chaque pays

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i)
Then

'and if sheets("media").range("d" & cpt_media).text > > > Sheets("Funds").Range("D1").Value

Sheets("résult").Range("a" & ligne_courante) > > > Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) > > > Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) > > > Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) > > > Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) > > > Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) > > > Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante) > > > Sheets("media").Range("c" & cpt_media)
Sheets("résult").Range("i" & ligne_courante) > > > Sheets("media").Range("d" & cpt_media)
Sheets("résult").Range("j" & ligne_courante) > > > Sheets("media").Range("e" & cpt_media)
ligne_courante = ligne_courante + 1
End If

cpt_media = cpt_media + 1

Loop

cpt_media = 2

End If

Next

cpt_funds = cpt_funds + 1

Loop

'
End Sub- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -








Avatar
lglux
Re,

cette partie ne fonctionne pas:

----------------------------------------------------------
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i) And
Sheets("media").Range("d" & cpt_media).Text =
Sheets("Funds").Range("D1").Value Then


Sheets("result").Range("a" & ligne_courante, "f" &
ligne_courante).Value = Sheets("Funds").Range("a" & ligne_courante,
"f" & ligne_courante).Value
Sheets("result").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("result").Range("h" & ligne_courante, "j" &
ligne_courante).Value = Sheets("media").Range("c" & cpt_media, "e" &
cpt_media).Value
ligne_courante = ligne_courante + 1
End If

-------------------------------

Si je vire le

And Sheets("media").Range("d" & cpt_media).Text =
Sheets("Funds").Range("D1").Value

ca marche (enfin le critere ne reste que le pays), donc si je veux
comme critere: Funds.shareclass = media.typeshareclass_published sur
sheet!result, je ne sais pas comment m'y prendre.


Avec le code en entier que tu me donnes, au lieu d'obtenir sur la
feuille "result" une ligne par type de media repondant a la condition
IF, j'ai sur la premiere ligne les infos pris de Funds puis a partir
de la colonne G les infos des media puis sur les lignes d'apres
seulement les infos du IF a partir de G, mais rien sur les colonnes de
A a F.










On 10 août, 11:06, FFO wrote:
Rebonjours à toi

Peux tu me transmettre la partie du code qui fonctionne mal avec l'attendu
et l'obtenu

Merci d'avance




Bonjour FFO

Merci pour la cure d'amaigrissement c'est bien plus joli, je vais plus
tard me pencher et en tirer les lecons.

Bon par contre plus rien ne s'affiche dans la feuille result, a croire
que le deuxieme critere avec le "and" passe mal, bizarre

MERCI !!

On 10 août, 10:29, lglux wrote:
Bonjour Daniel,

J'ai pas osé mettre un fichier car j'avais lu la netiquette de ce
forum, certes datée de 2003..

http://cjoint.com/?ikkARtRCiO

sur la feuille result j'ai mis les infos pour lancer la macro:

1. Appuyer sur le bouton en haut a droite
2. remplir les champs
3. input data puis valider
4. resultat dans cette feuille, j'aimerai que la colonne D = colonn e I
ou "*"

MERCI !!

On 10 août, 09:53, "Daniel" wrote:

Bonjour.
C'est difficile de se faire une idée, mais, oui, avec des "and", ça doit le
faire. Sinon, le mieux est de télécharger ton classeur surwww.c joint.comet
de poster l'adresse générée. N'oublie pas de remplacer les éventuelles
données confidentielles
Cordialement.
Daniel
"lglux" a écrit dans le message de ne ws:

Bonsoir a tous,

Malgré la mine d'or présente sur le forum, je ne dois pas utili ser les
bons mots clés car je ne trouve pas la reponse...

J'utilise le vba assez sommairement et j'aimerai developper mes
connaissances surtout que là j'en ai vraiment besoin pour le boul ot:

(je vous passe l'etape du formulaire et tout que j'etais pas peu fi er
d'avoir mis en place)

Voilà j'aimerai copier une ligne (table "media") suivant plusieurs
critères d'une autre ligne d'une autre worksheet (inséré via le
formulaire) "fonds".

Le choix de la ligne à copier doit se faire en fonction de trois
criteres.

Pour faire simple, j'aimerai la copie de la ligne fonds + la copie de
la ligne media (a la suite sur la meme ligne) sur une troisieme
feuille SI et seulement SI les trois criteres present dans les deux
lignes fonds et media sont égaux.

Pour l'instant ca marche pour le critere pays avec ce code mais je ne
sais pas comment inclure les autres criteres (avec un and? comment
utiliser cela? mon code n'est pas trop lourd?):

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays (i)
Then

Sheets("résult").Range("a" & ligne_courante) =
Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) =
Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) =
Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) =
Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) =
Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) =
Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pa ys(i)
Sheets("résult").Range("h" & ligne_courante) =
Sheets("media").Range("c" & cpt_media)
Sheets("résult").Range("i" & ligne_courante) =
Sheets("media").Range("d" & cpt_media)
Sheets("résult").Range("j" & ligne_courante) =
Sheets("media").Range("e" & cpt_media)
ligne_courante = ligne_courante + 1
End If

cpt_media = cpt_media + 1

Loop

cpt_media = 2

End If

Next

cpt_funds = cpt_funds + 1

Loop

(pour ceux qui veulent l'integralité du code pour peut etre mieux
comprendre ma manip)
------------------------------------------------------------------- --------­­­----------------------------------------------------

Sub Macro1()
'

'

Dim Tab_pays(30) As String ' tableau de tous les pays
Dim cpt_funds, cpt_media As Integer
Dim Tab_lettres(27) As String ' tableau des colonnes de G à AG

Tab_lettres(1) = "G"
Tab_lettres(2) = "H"
Tab_lettres(3) = "I"
Tab_lettres(4) = "J"
Tab_lettres(5) = "K"
Tab_lettres(6) = "L"
Tab_lettres(7) = "M"
Tab_lettres(8) = "N"
Tab_lettres(9) = "O"
Tab_lettres(10) = "P"
Tab_lettres(11) = "Q"
Tab_lettres(12) = "R"
Tab_lettres(13) = "S"
Tab_lettres(14) = "T"
Tab_lettres(15) = "U"
Tab_lettres(16) = "V"
Tab_lettres(17) = "W"
Tab_lettres(18) = "X"
Tab_lettres(19) = "Y"
Tab_lettres(20) = "Z"
Tab_lettres(21) = "AA"
Tab_lettres(22) = "AB"
Tab_lettres(23) = "AC"
Tab_lettres(24) = "AD"
Tab_lettres(25) = "AE"
Tab_lettres(26) = "AF"
Tab_lettres(27) = "AG"

' Lecture entête feuille Funds

ISIN = Sheets("Funds").Range("A1").Value
Funds = Sheets("Funds").Range("B1").Value
Subs_Funds = Sheets("Funds").Range("C1").Value
Share_classe = Sheets("Funds").Range("D1").Value
Type_share = Sheets("Funds").Range("E1").Value
launch_date = Sheets("Funds").Range("F1").Value

' remplissage tableau pays

Tab_pays(1) = Sheets("Funds").Range("G1").Value
Tab_pays(2) = Sheets("Funds").Range("H1").Value
Tab_pays(3) = Sheets("Funds").Range("I1").Value
Tab_pays(4) = Sheets("Funds").Range("J1").Value
Tab_pays(5) = Sheets("Funds").Range("K1").Value
Tab_pays(6) = Sheets("Funds").Range("L1").Value
Tab_pays(7) = Sheets("Funds").Range("M1").Value
Tab_pays(8) = Sheets("Funds").Range("N1").Value
Tab_pays(9) = Sheets("Funds").Range("O1").Value
Tab_pays(10) = Sheets("Funds").Range("P1").Value
Tab_pays(11) = Sheets("Funds").Range("Q1").Value
Tab_pays(12) = Sheets("Funds").Range("R1").Value
Tab_pays(13) = Sheets("Funds").Range("S1").Value
Tab_pays(14) = Sheets("Funds").Range("T1").Value
Tab_pays(15) = Sheets("Funds").Range("U1").Value
Tab_pays(16) = Sheets("Funds").Range("V1").Value
Tab_pays(17) = Sheets("Funds").Range("W1").Value
Tab_pays(18) = Sheets("Funds").Range("X1").Value
Tab_pays(19) = Sheets("Funds").Range("Y1").Value
Tab_pays(20) = Sheets("Funds").Range("Z1").Value
Tab_pays(21) = Sheets("Funds").Range("AA1").Value
Tab_pays(22) = Sheets("Funds").Range("AB1").Value
Tab_pays(23) = Sheets("Funds").Range("AC1").Value
Tab_pays(24) = Sheets("Funds").Range("AD1").Value
Tab_pays(25) = Sheets("Funds").Range("AE1").Value
Tab_pays(26) = Sheets("Funds").Range("AF1").Value
Tab_pays(27) = Sheets("Funds").Range("AG1").Value

' Lecture entête feuille Media

Country_pub = Sheets("Media").Range("B1").Value
Media_designa = Sheets("Media").Range("C1").Value
Pub_Share = Sheets("Media").Range("D1").Value
Pub_Type_share = Sheets("Media").Range("E1").Value

' Copie de l'entête dans la feuille résult

Sheets("résult").Range("a1") = ISIN
Sheets("résult").Range("b1") = Funds
Sheets("résult").Range("c1") = Subs_Funds
Sheets("résult").Range("d1") = Share_classe
Sheets("résult").Range("e1") = Type_share
Sheets("résult").Range("f1") = launch_date
Sheets("résult").Range("g1") = Country_pub
Sheets("résult").Range("h1") = Media_designa
Sheets("résult").Range("i1") = Pub_Share
Sheets("résult").Range("j1") = Pub_Type_share

cpt_funds = 2 ' position première ligne utile dans feuille Funds
cpt_media = 2 ' position première ligne utile dans feuille Media
ligne_courante = cpt_funds 'position ligne courante dans feuille
résult

' faire tant que Ax de la feuille Funds n'est pas vide

Do While Sheets("Funds").Range("a" & cpt_funds).Text <> ""

'recherche des médias de chaque pays

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays (i)
Then

'and if sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value

Sheets("résult").Range("a" & ligne_courante) =
Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) =
Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) =
Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) =
Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) =
Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) =
Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pa ys(i)




...

plus de détails »- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -





Avatar
Daniel
Dans Macro1, remplace :
If pays_a_tester = "True" Then
par
If pays_a_tester = True Then
Ce n'est peut-être pas toute la solution, mais une partie, en tout cas.
Daniel
"lglux" a écrit dans le message de news:

Bonjour FFO

Merci pour la cure d'amaigrissement c'est bien plus joli, je vais plus
tard me pencher et en tirer les lecons.

Bon par contre plus rien ne s'affiche dans la feuille result, a croire
que le deuxieme critere avec le "and" passe mal, bizarre

MERCI !!


On 10 août, 10:29, lglux wrote:
Bonjour Daniel,

J'ai pas osé mettre un fichier car j'avais lu la netiquette de ce
forum, certes datée de 2003..

http://cjoint.com/?ikkARtRCiO

sur la feuille result j'ai mis les infos pour lancer la macro:

1. Appuyer sur le bouton en haut a droite
2. remplir les champs
3. input data puis valider
4. resultat dans cette feuille, j'aimerai que la colonne D = colonne I
ou "*"

MERCI !!

On 10 août, 09:53, "Daniel" wrote:



Bonjour.
C'est difficile de se faire une idée, mais, oui, avec des "and", ça doit
le
faire. Sinon, le mieux est de télécharger ton classeur
surwww.cjoint.comet
de poster l'adresse générée. N'oublie pas de remplacer les éventuelles
données confidentielles
Cordialement.
Daniel
"lglux" a écrit dans le message de news:

Bonsoir a tous,

Malgré la mine d'or présente sur le forum, je ne dois pas utiliser les
bons mots clés car je ne trouve pas la reponse...

J'utilise le vba assez sommairement et j'aimerai developper mes
connaissances surtout que là j'en ai vraiment besoin pour le boulot:

(je vous passe l'etape du formulaire et tout que j'etais pas peu fier
d'avoir mis en place)

Voilà j'aimerai copier une ligne (table "media") suivant plusieurs
critères d'une autre ligne d'une autre worksheet (inséré via le
formulaire) "fonds".

Le choix de la ligne à copier doit se faire en fonction de trois
criteres.

Pour faire simple, j'aimerai la copie de la ligne fonds + la copie de
la ligne media (a la suite sur la meme ligne) sur une troisieme
feuille SI et seulement SI les trois criteres present dans les deux
lignes fonds et media sont égaux.

Pour l'instant ca marche pour le critere pays avec ce code mais je ne
sais pas comment inclure les autres criteres (avec un and? comment
utiliser cela? mon code n'est pas trop lourd?):

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i)
Then

Sheets("résult").Range("a" & ligne_courante) > > Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) > > Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) > > Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) > > Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) > > Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) > > Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante) > > Sheets("media").Range("c" & cpt_media)
Sheets("résult").Range("i" & ligne_courante) > > Sheets("media").Range("d" & cpt_media)
Sheets("résult").Range("j" & ligne_courante) > > Sheets("media").Range("e" & cpt_media)
ligne_courante = ligne_courante + 1
End If

cpt_media = cpt_media + 1

Loop

cpt_media = 2

End If

Next

cpt_funds = cpt_funds + 1

Loop

(pour ceux qui veulent l'integralité du code pour peut etre mieux
comprendre ma manip)
---------------------------------------------------------------------------­­----------------------------------------------------

Sub Macro1()
'

'

Dim Tab_pays(30) As String ' tableau de tous les pays
Dim cpt_funds, cpt_media As Integer
Dim Tab_lettres(27) As String ' tableau des colonnes de G à AG

Tab_lettres(1) = "G"
Tab_lettres(2) = "H"
Tab_lettres(3) = "I"
Tab_lettres(4) = "J"
Tab_lettres(5) = "K"
Tab_lettres(6) = "L"
Tab_lettres(7) = "M"
Tab_lettres(8) = "N"
Tab_lettres(9) = "O"
Tab_lettres(10) = "P"
Tab_lettres(11) = "Q"
Tab_lettres(12) = "R"
Tab_lettres(13) = "S"
Tab_lettres(14) = "T"
Tab_lettres(15) = "U"
Tab_lettres(16) = "V"
Tab_lettres(17) = "W"
Tab_lettres(18) = "X"
Tab_lettres(19) = "Y"
Tab_lettres(20) = "Z"
Tab_lettres(21) = "AA"
Tab_lettres(22) = "AB"
Tab_lettres(23) = "AC"
Tab_lettres(24) = "AD"
Tab_lettres(25) = "AE"
Tab_lettres(26) = "AF"
Tab_lettres(27) = "AG"

' Lecture entête feuille Funds

ISIN = Sheets("Funds").Range("A1").Value
Funds = Sheets("Funds").Range("B1").Value
Subs_Funds = Sheets("Funds").Range("C1").Value
Share_classe = Sheets("Funds").Range("D1").Value
Type_share = Sheets("Funds").Range("E1").Value
launch_date = Sheets("Funds").Range("F1").Value

' remplissage tableau pays

Tab_pays(1) = Sheets("Funds").Range("G1").Value
Tab_pays(2) = Sheets("Funds").Range("H1").Value
Tab_pays(3) = Sheets("Funds").Range("I1").Value
Tab_pays(4) = Sheets("Funds").Range("J1").Value
Tab_pays(5) = Sheets("Funds").Range("K1").Value
Tab_pays(6) = Sheets("Funds").Range("L1").Value
Tab_pays(7) = Sheets("Funds").Range("M1").Value
Tab_pays(8) = Sheets("Funds").Range("N1").Value
Tab_pays(9) = Sheets("Funds").Range("O1").Value
Tab_pays(10) = Sheets("Funds").Range("P1").Value
Tab_pays(11) = Sheets("Funds").Range("Q1").Value
Tab_pays(12) = Sheets("Funds").Range("R1").Value
Tab_pays(13) = Sheets("Funds").Range("S1").Value
Tab_pays(14) = Sheets("Funds").Range("T1").Value
Tab_pays(15) = Sheets("Funds").Range("U1").Value
Tab_pays(16) = Sheets("Funds").Range("V1").Value
Tab_pays(17) = Sheets("Funds").Range("W1").Value
Tab_pays(18) = Sheets("Funds").Range("X1").Value
Tab_pays(19) = Sheets("Funds").Range("Y1").Value
Tab_pays(20) = Sheets("Funds").Range("Z1").Value
Tab_pays(21) = Sheets("Funds").Range("AA1").Value
Tab_pays(22) = Sheets("Funds").Range("AB1").Value
Tab_pays(23) = Sheets("Funds").Range("AC1").Value
Tab_pays(24) = Sheets("Funds").Range("AD1").Value
Tab_pays(25) = Sheets("Funds").Range("AE1").Value
Tab_pays(26) = Sheets("Funds").Range("AF1").Value
Tab_pays(27) = Sheets("Funds").Range("AG1").Value

' Lecture entête feuille Media

Country_pub = Sheets("Media").Range("B1").Value
Media_designa = Sheets("Media").Range("C1").Value
Pub_Share = Sheets("Media").Range("D1").Value
Pub_Type_share = Sheets("Media").Range("E1").Value

' Copie de l'entête dans la feuille résult

Sheets("résult").Range("a1") = ISIN
Sheets("résult").Range("b1") = Funds
Sheets("résult").Range("c1") = Subs_Funds
Sheets("résult").Range("d1") = Share_classe
Sheets("résult").Range("e1") = Type_share
Sheets("résult").Range("f1") = launch_date
Sheets("résult").Range("g1") = Country_pub
Sheets("résult").Range("h1") = Media_designa
Sheets("résult").Range("i1") = Pub_Share
Sheets("résult").Range("j1") = Pub_Type_share

cpt_funds = 2 ' position première ligne utile dans feuille Funds
cpt_media = 2 ' position première ligne utile dans feuille Media
ligne_courante = cpt_funds 'position ligne courante dans feuille
résult

' faire tant que Ax de la feuille Funds n'est pas vide

Do While Sheets("Funds").Range("a" & cpt_funds).Text <> ""

'recherche des médias de chaque pays

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i)
Then

'and if sheets("media").range("d" & cpt_media).text > > Sheets("Funds").Range("D1").Value

Sheets("résult").Range("a" & ligne_courante) > > Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) > > Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) > > Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) > > Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) > > Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) > > Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(i)
Sheets("résult").Range("h" & ligne_courante) > > Sheets("media").Range("c" & cpt_media)
Sheets("résult").Range("i" & ligne_courante) > > Sheets("media").Range("d" & cpt_media)
Sheets("résult").Range("j" & ligne_courante) > > Sheets("media").Range("e" & cpt_media)
ligne_courante = ligne_courante + 1
End If

cpt_media = cpt_media + 1

Loop

cpt_media = 2

End If

Next

cpt_funds = cpt_funds + 1

Loop

'
End Sub- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
lglux
Merci Daniel,

En fait pour cette condition là, avec les pays, ca marche, mais pas
avec la condition type share class. J'ai enlevé les " " et ca marche
aussi.




On 10 août, 11:25, "Daniel" wrote:
Dans Macro1, remplace :
If pays_a_tester = "True" Then
par
If pays_a_tester = True Then
Ce n'est peut-être pas toute la solution, mais une partie, en tout cas.
Daniel
"lglux" a écrit dans le message de news:

Bonjour FFO

Merci pour la cure d'amaigrissement c'est bien plus joli, je vais plus
tard me pencher et en tirer les lecons.

Bon par contre plus rien ne s'affiche dans la feuille result, a croire
que le deuxieme critere avec le "and" passe mal, bizarre

MERCI !!

On 10 août, 10:29, lglux wrote:



Bonjour Daniel,

J'ai pas osé mettre un fichier car j'avais lu la netiquette de ce
forum, certes datée de 2003..

http://cjoint.com/?ikkARtRCiO

sur la feuille result j'ai mis les infos pour lancer la macro:

1. Appuyer sur le bouton en haut a droite
2. remplir les champs
3. input data puis valider
4. resultat dans cette feuille, j'aimerai que la colonne D = colonne I
ou "*"

MERCI !!

On 10 août, 09:53, "Daniel" wrote:

Bonjour.
C'est difficile de se faire une idée, mais, oui, avec des "and", ça doit
le
faire. Sinon, le mieux est de télécharger ton classeur
surwww.cjoint.comet
de poster l'adresse générée. N'oublie pas de remplacer les év entuelles
données confidentielles
Cordialement.
Daniel
"lglux" a écrit dans le message de news:

Bonsoir a tous,

Malgré la mine d'or présente sur le forum, je ne dois pas utilise r les
bons mots clés car je ne trouve pas la reponse...

J'utilise le vba assez sommairement et j'aimerai developper mes
connaissances surtout que là j'en ai vraiment besoin pour le boulot:

(je vous passe l'etape du formulaire et tout que j'etais pas peu fier
d'avoir mis en place)

Voilà j'aimerai copier une ligne (table "media") suivant plusieurs
critères d'une autre ligne d'une autre worksheet (inséré via le
formulaire) "fonds".

Le choix de la ligne à copier doit se faire en fonction de trois
criteres.

Pour faire simple, j'aimerai la copie de la ligne fonds + la copie de
la ligne media (a la suite sur la meme ligne) sur une troisieme
feuille SI et seulement SI les trois criteres present dans les deux
lignes fonds et media sont égaux.

Pour l'instant ca marche pour le critere pays avec ce code mais je ne
sais pas comment inclure les autres criteres (avec un and? comment
utiliser cela? mon code n'est pas trop lourd?):

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i)
Then

Sheets("résult").Range("a" & ligne_courante) =
Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) =
Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) =
Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) =
Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) =
Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) =
Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pays (i)
Sheets("résult").Range("h" & ligne_courante) =
Sheets("media").Range("c" & cpt_media)
Sheets("résult").Range("i" & ligne_courante) =
Sheets("media").Range("d" & cpt_media)
Sheets("résult").Range("j" & ligne_courante) =
Sheets("media").Range("e" & cpt_media)
ligne_courante = ligne_courante + 1
End If

cpt_media = cpt_media + 1

Loop

cpt_media = 2

End If

Next

cpt_funds = cpt_funds + 1

Loop

(pour ceux qui veulent l'integralité du code pour peut etre mieux
comprendre ma manip)
--------------------------------------------------------------------- ------­­­----------------------------------------------------

Sub Macro1()
'

'

Dim Tab_pays(30) As String ' tableau de tous les pays
Dim cpt_funds, cpt_media As Integer
Dim Tab_lettres(27) As String ' tableau des colonnes de G à AG

Tab_lettres(1) = "G"
Tab_lettres(2) = "H"
Tab_lettres(3) = "I"
Tab_lettres(4) = "J"
Tab_lettres(5) = "K"
Tab_lettres(6) = "L"
Tab_lettres(7) = "M"
Tab_lettres(8) = "N"
Tab_lettres(9) = "O"
Tab_lettres(10) = "P"
Tab_lettres(11) = "Q"
Tab_lettres(12) = "R"
Tab_lettres(13) = "S"
Tab_lettres(14) = "T"
Tab_lettres(15) = "U"
Tab_lettres(16) = "V"
Tab_lettres(17) = "W"
Tab_lettres(18) = "X"
Tab_lettres(19) = "Y"
Tab_lettres(20) = "Z"
Tab_lettres(21) = "AA"
Tab_lettres(22) = "AB"
Tab_lettres(23) = "AC"
Tab_lettres(24) = "AD"
Tab_lettres(25) = "AE"
Tab_lettres(26) = "AF"
Tab_lettres(27) = "AG"

' Lecture entête feuille Funds

ISIN = Sheets("Funds").Range("A1").Value
Funds = Sheets("Funds").Range("B1").Value
Subs_Funds = Sheets("Funds").Range("C1").Value
Share_classe = Sheets("Funds").Range("D1").Value
Type_share = Sheets("Funds").Range("E1").Value
launch_date = Sheets("Funds").Range("F1").Value

' remplissage tableau pays

Tab_pays(1) = Sheets("Funds").Range("G1").Value
Tab_pays(2) = Sheets("Funds").Range("H1").Value
Tab_pays(3) = Sheets("Funds").Range("I1").Value
Tab_pays(4) = Sheets("Funds").Range("J1").Value
Tab_pays(5) = Sheets("Funds").Range("K1").Value
Tab_pays(6) = Sheets("Funds").Range("L1").Value
Tab_pays(7) = Sheets("Funds").Range("M1").Value
Tab_pays(8) = Sheets("Funds").Range("N1").Value
Tab_pays(9) = Sheets("Funds").Range("O1").Value
Tab_pays(10) = Sheets("Funds").Range("P1").Value
Tab_pays(11) = Sheets("Funds").Range("Q1").Value
Tab_pays(12) = Sheets("Funds").Range("R1").Value
Tab_pays(13) = Sheets("Funds").Range("S1").Value
Tab_pays(14) = Sheets("Funds").Range("T1").Value
Tab_pays(15) = Sheets("Funds").Range("U1").Value
Tab_pays(16) = Sheets("Funds").Range("V1").Value
Tab_pays(17) = Sheets("Funds").Range("W1").Value
Tab_pays(18) = Sheets("Funds").Range("X1").Value
Tab_pays(19) = Sheets("Funds").Range("Y1").Value
Tab_pays(20) = Sheets("Funds").Range("Z1").Value
Tab_pays(21) = Sheets("Funds").Range("AA1").Value
Tab_pays(22) = Sheets("Funds").Range("AB1").Value
Tab_pays(23) = Sheets("Funds").Range("AC1").Value
Tab_pays(24) = Sheets("Funds").Range("AD1").Value
Tab_pays(25) = Sheets("Funds").Range("AE1").Value
Tab_pays(26) = Sheets("Funds").Range("AF1").Value
Tab_pays(27) = Sheets("Funds").Range("AG1").Value

' Lecture entête feuille Media

Country_pub = Sheets("Media").Range("B1").Value
Media_designa = Sheets("Media").Range("C1").Value
Pub_Share = Sheets("Media").Range("D1").Value
Pub_Type_share = Sheets("Media").Range("E1").Value

' Copie de l'entête dans la feuille résult

Sheets("résult").Range("a1") = ISIN
Sheets("résult").Range("b1") = Funds
Sheets("résult").Range("c1") = Subs_Funds
Sheets("résult").Range("d1") = Share_classe
Sheets("résult").Range("e1") = Type_share
Sheets("résult").Range("f1") = launch_date
Sheets("résult").Range("g1") = Country_pub
Sheets("résult").Range("h1") = Media_designa
Sheets("résult").Range("i1") = Pub_Share
Sheets("résult").Range("j1") = Pub_Type_share

cpt_funds = 2 ' position première ligne utile dans feuille Funds
cpt_media = 2 ' position première ligne utile dans feuille Media
ligne_courante = cpt_funds 'position ligne courante dans feuille
résult

' faire tant que Ax de la feuille Funds n'est pas vide

Do While Sheets("Funds").Range("a" & cpt_funds).Text <> ""

'recherche des médias de chaque pays

For i = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(i) &
cpt_funds).Value

If pays_a_tester = "Oui" Then

' recherche dans feuille Média
' faire tant que Bx de la feuille Media n'est pas vide

Do While Sheets("media").Range("b" & cpt_media).Text <> ""

If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i)
Then

'and if sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value

Sheets("résult").Range("a" & ligne_courante) =
Sheets("Funds").Range("a" & cpt_funds)
Sheets("résult").Range("b" & ligne_courante) =
Sheets("Funds").Range("b" & cpt_funds)
Sheets("résult").Range("c" & ligne_courante) =
Sheets("Funds").Range("c" & cpt_funds)
Sheets("résult").Range("d" & ligne_courante) =
Sheets("Funds").Range("d" & cpt_funds)
Sheets("résult").Range("e" & ligne_courante) =
Sheets("Funds").Range("e" & cpt_funds)
Sheets("résult").Range("f" & ligne_courante) =
Sheets("Funds").Range("f" & cpt_funds)
Sheets("résult").Range("g" & ligne_courante) = Tab_pays (i)
Sheets("résult").Range("h" & ligne_courante) =
Sheets("media").Range("c" & cpt_media)
Sheets("résult").Range("i" & ligne_courante) =
Sheets("media").Range("d" & cpt_media)
Sheets("résult").Range("j" & ligne_courante) =
Sheets("media").Range("e" & cpt_media)
ligne_courante = ligne_courante +



...

plus de détails »- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -




1 2 3