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 ca s.
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 = 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.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 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)
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
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" <dZZZcolarde...@free.fr> 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 ca s.
Daniel
"lglux" <loic.guiller...@gmail.com> a écrit dans le message de news:
1186735973.236062.101...@j4g2000prf.googlegroups.com...
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 <loic.guiller...@gmail.com> 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" <dZZZcolarde...@free.fr> 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" <loic.guiller...@gmail.com> a écrit dans le message de ne ws:
1186691248.327243.280...@m37g2000prh.googlegroups.com...
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)
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
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 ca s.
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 = 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.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 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)
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
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 -
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 <loic.guiller...@gmail.com> 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" <dZZZcolarde...@free.fr> 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" <loic.guiller...@gmail.com> a écrit dans le message de news:
1186691248.327243.280...@m37g2000prh.googlegroups.com...
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 -
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 -
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 ca s.
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 = 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.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 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)
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
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" <dZZZcolarde...@free.fr> 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 ca s.
Daniel
"lglux" <loic.guiller...@gmail.com> a écrit dans le message de news:
1186735973.236062.101...@j4g2000prf.googlegroups.com...
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 <loic.guiller...@gmail.com> 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" <dZZZcolarde...@free.fr> 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" <loic.guiller...@gmail.com> a écrit dans le message de ne ws:
1186691248.327243.280...@m37g2000prh.googlegroups.com...
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)
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
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 ca s.
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 = 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.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 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)
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
J'ai ajouté cela et tout marche comme souhaité!!
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i) And
Sheets("media").Range("d" & cpt_media).Text =
Sheets("Funds").Range("D" & cpt_funds).Value Or
Sheets("media").Range("d" & cpt_media).Text = "*" Then
j'aimerai bien que les allegement de FFO fonctionne mais en tout cas
ca marche!
merci!
On 10 août, 11:35, lglux wrote: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 = colo nne 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 uti liser 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 bo ulot:
(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 plusie urs
critères d'une autre ligne d'une autre worksheet (inséré vi a 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 copi e 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 de ux
lignes fonds et media sont égaux.
Pour l'instant ca marche pour le critere pays avec ce code mais j e 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_pa ys(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 mie ux
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 Fu nds
cpt_media = 2 ' position première ligne utile dans feuille Me dia
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
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
J'ai ajouté cela et tout marche comme souhaité!!
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i) And
Sheets("media").Range("d" & cpt_media).Text =
Sheets("Funds").Range("D" & cpt_funds).Value Or
Sheets("media").Range("d" & cpt_media).Text = "*" Then
j'aimerai bien que les allegement de FFO fonctionne mais en tout cas
ca marche!
merci!
On 10 août, 11:35, lglux <loic.guiller...@gmail.com> wrote:
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" <dZZZcolarde...@free.fr> 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" <loic.guiller...@gmail.com> a écrit dans le message de news:
1186735973.236062.101...@j4g2000prf.googlegroups.com...
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 <loic.guiller...@gmail.com> 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 = colo nne I
ou "*"
MERCI !!
On 10 août, 09:53, "Daniel" <dZZZcolarde...@free.fr> 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" <loic.guiller...@gmail.com> a écrit dans le message de news:
1186691248.327243.280...@m37g2000prh.googlegroups.com...
Bonsoir a tous,
Malgré la mine d'or présente sur le forum, je ne dois pas uti liser 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 bo ulot:
(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 plusie urs
critères d'une autre ligne d'une autre worksheet (inséré vi a 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 copi e 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 de ux
lignes fonds et media sont égaux.
Pour l'instant ca marche pour le critere pays avec ce code mais j e 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_pa ys(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 mie ux
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 Fu nds
cpt_media = 2 ' position première ligne utile dans feuille Me dia
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
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
J'ai ajouté cela et tout marche comme souhaité!!
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(i) And
Sheets("media").Range("d" & cpt_media).Text =
Sheets("Funds").Range("D" & cpt_funds).Value Or
Sheets("media").Range("d" & cpt_media).Text = "*" Then
j'aimerai bien que les allegement de FFO fonctionne mais en tout cas
ca marche!
merci!
On 10 août, 11:35, lglux wrote: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 = colo nne 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 uti liser 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 bo ulot:
(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 plusie urs
critères d'une autre ligne d'une autre worksheet (inséré vi a 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 copi e 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 de ux
lignes fonds et media sont égaux.
Pour l'instant ca marche pour le critere pays avec ce code mais j e 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_pa ys(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 mie ux
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 Fu nds
cpt_media = 2 ' position première ligne utile dans feuille Me dia
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
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Rebonjours à toi
J'ai utilisé la même instruction que toi :
For i = 1 To 27
Qui donc se répète 2 fois dans le code
Il serait donc bon de choisir 2 variables différentes
Je te propose de changer la 2° ainsi :
For j = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(j) &
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(j) 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(j)
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
Remplace ce bout de code et réessaie
Concernant les conditions je te propose ceci :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Je décrite en A/B/C/D les variable testées dans les conditions
Rajoute donc les lignes :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Avant le Do While
Mets un point d'arret au niveau de Do While (un click sur le bandeau gris en
regard)
Exécute le code
Il doit s'arréter à ce point
A chaque arrêt passes ta souris sur A/B/C/D pour en connaitre les valeu rs à
ce stade de l'éxécution
Si toutes les conditions sont remplies aprés avoir activé F5 du clavi er
regarde dans le classeur le résultat obtenu
recommence l'opération jusqu'à la fin de l'éxécution
Attention :
si tu souhaites que les 2 conditions soient réunies pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
si tu souhaites qu'une conditions ou l'autre soit vraie pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) or
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Bien choisir la bonne ligne de commande
Dis moi ce que tu as constaté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
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Rebonjours à toi
J'ai utilisé la même instruction que toi :
For i = 1 To 27
Qui donc se répète 2 fois dans le code
Il serait donc bon de choisir 2 variables différentes
Je te propose de changer la 2° ainsi :
For j = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(j) &
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(j) 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(j)
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
Remplace ce bout de code et réessaie
Concernant les conditions je te propose ceci :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Je décrite en A/B/C/D les variable testées dans les conditions
Rajoute donc les lignes :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Avant le Do While
Mets un point d'arret au niveau de Do While (un click sur le bandeau gris en
regard)
Exécute le code
Il doit s'arréter à ce point
A chaque arrêt passes ta souris sur A/B/C/D pour en connaitre les valeu rs à
ce stade de l'éxécution
Si toutes les conditions sont remplies aprés avoir activé F5 du clavi er
regarde dans le classeur le résultat obtenu
recommence l'opération jusqu'à la fin de l'éxécution
Attention :
si tu souhaites que les 2 conditions soient réunies pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
si tu souhaites qu'une conditions ou l'autre soit vraie pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) or
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Bien choisir la bonne ligne de commande
Dis moi ce que tu as constaté
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 <loic.guiller...@gmail.com> 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" <dZZZcolarde...@free.fr> 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" <loic.guiller...@gmail.com> a écrit dans le message de ne ws:
1186691248.327243.280...@m37g2000prh.googlegroups.com...
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
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Rebonjours à toi
J'ai utilisé la même instruction que toi :
For i = 1 To 27
Qui donc se répète 2 fois dans le code
Il serait donc bon de choisir 2 variables différentes
Je te propose de changer la 2° ainsi :
For j = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(j) &
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(j) 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(j)
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
Remplace ce bout de code et réessaie
Concernant les conditions je te propose ceci :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Je décrite en A/B/C/D les variable testées dans les conditions
Rajoute donc les lignes :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Avant le Do While
Mets un point d'arret au niveau de Do While (un click sur le bandeau gris en
regard)
Exécute le code
Il doit s'arréter à ce point
A chaque arrêt passes ta souris sur A/B/C/D pour en connaitre les valeu rs à
ce stade de l'éxécution
Si toutes les conditions sont remplies aprés avoir activé F5 du clavi er
regarde dans le classeur le résultat obtenu
recommence l'opération jusqu'à la fin de l'éxécution
Attention :
si tu souhaites que les 2 conditions soient réunies pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
si tu souhaites qu'une conditions ou l'autre soit vraie pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) or
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Bien choisir la bonne ligne de commande
Dis moi ce que tu as constaté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
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Rebonjours à toi
J'ai utilisé la même instruction que toi :
For i = 1 To 27
Qui donc se répète 2 fois dans le code
Il serait donc bon de choisir 2 variables différentes
Je te propose de changer la 2° ainsi :
For j = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(j) &
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(j) and
sheets("media").range("d" & cpt_media).text > Sheets("Funds").Range("D1").Value Then
Sheets("résult").Range("a" & ligne_courante, "f" & ligne_courante) .ValueSheets("Funds").Range("a" & ligne_courante, "f" & ligne_courante) .Value
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(j)
Sheets("résult").Range("h" & ligne_courante, "j" & ligne_courante) .ValueSheets("media").Range("c" & cpt_media, "e" & cpt_media) .Value
ligne_courante = ligne_courante + 1
End If
Remplace ce bout de code et réessaie
Concernant les conditions je te propose ceci :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text > Sheets("Funds").Range("D1").Value Then
Je décrite en A/B/C/D les variable testées dans les conditions
Rajoute donc les lignes :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Avant le Do While
Mets un point d'arret au niveau de Do While (un click sur le bandeau gris
en
regard)
Exécute le code
Il doit s'arréter à ce point
A chaque arrêt passes ta souris sur A/B/C/D pour en connaitre les valeurs
à
ce stade de l'éxécution
Si toutes les conditions sont remplies aprés avoir activé F5 du clavier
regarde dans le classeur le résultat obtenu
recommence l'opération jusqu'à la fin de l'éxécution
Attention :
si tu souhaites que les 2 conditions soient réunies pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text > Sheets("Funds").Range("D1").Value Then
si tu souhaites qu'une conditions ou l'autre soit vraie pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) or
sheets("media").range("d" & cpt_media).text > Sheets("Funds").Range("D1").Value Then
Bien choisir la bonne ligne de commande
Dis moi ce que tu as constaté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
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Rebonjours à toi
J'ai utilisé la même instruction que toi :
For i = 1 To 27
Qui donc se répète 2 fois dans le code
Il serait donc bon de choisir 2 variables différentes
Je te propose de changer la 2° ainsi :
For j = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(j) &
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(j) 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(j)
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
Remplace ce bout de code et réessaie
Concernant les conditions je te propose ceci :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text > Sheets("Funds").Range("D1").Value Then
Je décrite en A/B/C/D les variable testées dans les conditions
Rajoute donc les lignes :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Avant le Do While
Mets un point d'arret au niveau de Do While (un click sur le bandeau gris
en
regard)
Exécute le code
Il doit s'arréter à ce point
A chaque arrêt passes ta souris sur A/B/C/D pour en connaitre les valeurs
à
ce stade de l'éxécution
Si toutes les conditions sont remplies aprés avoir activé F5 du clavier
regarde dans le classeur le résultat obtenu
recommence l'opération jusqu'à la fin de l'éxécution
Attention :
si tu souhaites que les 2 conditions soient réunies pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text > Sheets("Funds").Range("D1").Value Then
si tu souhaites qu'une conditions ou l'autre soit vraie pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) or
sheets("media").range("d" & cpt_media).text > Sheets("Funds").Range("D1").Value Then
Bien choisir la bonne ligne de commande
Dis moi ce que tu as constaté
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 <loic.guiller...@gmail.com> 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" <dZZZcolarde...@free.fr> 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" <loic.guiller...@gmail.com> a écrit dans le message de news:
1186691248.327243.280...@m37g2000prh.googlegroups.com...
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
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Rebonjours à toi
J'ai utilisé la même instruction que toi :
For i = 1 To 27
Qui donc se répète 2 fois dans le code
Il serait donc bon de choisir 2 variables différentes
Je te propose de changer la 2° ainsi :
For j = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(j) &
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(j) and
sheets("media").range("d" & cpt_media).text > Sheets("Funds").Range("D1").Value Then
Sheets("résult").Range("a" & ligne_courante, "f" & ligne_courante) .ValueSheets("Funds").Range("a" & ligne_courante, "f" & ligne_courante) .Value
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(j)
Sheets("résult").Range("h" & ligne_courante, "j" & ligne_courante) .ValueSheets("media").Range("c" & cpt_media, "e" & cpt_media) .Value
ligne_courante = ligne_courante + 1
End If
Remplace ce bout de code et réessaie
Concernant les conditions je te propose ceci :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text > Sheets("Funds").Range("D1").Value Then
Je décrite en A/B/C/D les variable testées dans les conditions
Rajoute donc les lignes :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Avant le Do While
Mets un point d'arret au niveau de Do While (un click sur le bandeau gris
en
regard)
Exécute le code
Il doit s'arréter à ce point
A chaque arrêt passes ta souris sur A/B/C/D pour en connaitre les valeurs
à
ce stade de l'éxécution
Si toutes les conditions sont remplies aprés avoir activé F5 du clavier
regarde dans le classeur le résultat obtenu
recommence l'opération jusqu'à la fin de l'éxécution
Attention :
si tu souhaites que les 2 conditions soient réunies pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text > Sheets("Funds").Range("D1").Value Then
si tu souhaites qu'une conditions ou l'autre soit vraie pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) or
sheets("media").range("d" & cpt_media).text > Sheets("Funds").Range("D1").Value Then
Bien choisir la bonne ligne de commande
Dis moi ce que tu as constaté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
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Quand j'ai 3 conditions: il faut que la premiere soit vraie, ET puis
la deuxieme OU la troisieme, comment tu t'y prends?
le IF .... AND..... OR....THEN ne marche pas car le OR va l'emporter
sur le premier IF et AND.....
On 10 août, 11:56, FFO wrote:Rebonjours à toi
J'ai utilisé la même instruction que toi :
For i = 1 To 27
Qui donc se répète 2 fois dans le code
Il serait donc bon de choisir 2 variables différentes
Je te propose de changer la 2° ainsi :
For j = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(j) &
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(j) 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(j)
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
Remplace ce bout de code et réessaie
Concernant les conditions je te propose ceci :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text > > Sheets("Funds").Range("D1").Value Then
Je décrite en A/B/C/D les variable testées dans les conditions
Rajoute donc les lignes :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Avant le Do While
Mets un point d'arret au niveau de Do While (un click sur le bandeau gris en
regard)
Exécute le code
Il doit s'arréter à ce point
A chaque arrêt passes ta souris sur A/B/C/D pour en connaitre les valeurs à
ce stade de l'éxécution
Si toutes les conditions sont remplies aprés avoir activé F5 du clavier
regarde dans le classeur le résultat obtenu
recommence l'opération jusqu'à la fin de l'éxécution
Attention :
si tu souhaites que les 2 conditions soient réunies pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text > > Sheets("Funds").Range("D1").Value Then
si tu souhaites qu'une conditions ou l'autre soit vraie pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) or
sheets("media").range("d" & cpt_media).text > > Sheets("Funds").Range("D1").Value Then
Bien choisir la bonne ligne de commande
Dis moi ce que tu as constaté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
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Quand j'ai 3 conditions: il faut que la premiere soit vraie, ET puis
la deuxieme OU la troisieme, comment tu t'y prends?
le IF .... AND..... OR....THEN ne marche pas car le OR va l'emporter
sur le premier IF et AND.....
On 10 août, 11:56, FFO <F...@discussions.microsoft.com> wrote:
Rebonjours à toi
J'ai utilisé la même instruction que toi :
For i = 1 To 27
Qui donc se répète 2 fois dans le code
Il serait donc bon de choisir 2 variables différentes
Je te propose de changer la 2° ainsi :
For j = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(j) &
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(j) 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(j)
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
Remplace ce bout de code et réessaie
Concernant les conditions je te propose ceci :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text > > Sheets("Funds").Range("D1").Value Then
Je décrite en A/B/C/D les variable testées dans les conditions
Rajoute donc les lignes :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Avant le Do While
Mets un point d'arret au niveau de Do While (un click sur le bandeau gris en
regard)
Exécute le code
Il doit s'arréter à ce point
A chaque arrêt passes ta souris sur A/B/C/D pour en connaitre les valeurs à
ce stade de l'éxécution
Si toutes les conditions sont remplies aprés avoir activé F5 du clavier
regarde dans le classeur le résultat obtenu
recommence l'opération jusqu'à la fin de l'éxécution
Attention :
si tu souhaites que les 2 conditions soient réunies pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text > > Sheets("Funds").Range("D1").Value Then
si tu souhaites qu'une conditions ou l'autre soit vraie pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) or
sheets("media").range("d" & cpt_media).text > > Sheets("Funds").Range("D1").Value Then
Bien choisir la bonne ligne de commande
Dis moi ce que tu as constaté
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 <loic.guiller...@gmail.com> 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" <dZZZcolarde...@free.fr> 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" <loic.guiller...@gmail.com> a écrit dans le message de news:
1186691248.327243.280...@m37g2000prh.googlegroups.com...
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
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Quand j'ai 3 conditions: il faut que la premiere soit vraie, ET puis
la deuxieme OU la troisieme, comment tu t'y prends?
le IF .... AND..... OR....THEN ne marche pas car le OR va l'emporter
sur le premier IF et AND.....
On 10 août, 11:56, FFO wrote:Rebonjours à toi
J'ai utilisé la même instruction que toi :
For i = 1 To 27
Qui donc se répète 2 fois dans le code
Il serait donc bon de choisir 2 variables différentes
Je te propose de changer la 2° ainsi :
For j = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(j) &
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(j) 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(j)
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
Remplace ce bout de code et réessaie
Concernant les conditions je te propose ceci :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text > > Sheets("Funds").Range("D1").Value Then
Je décrite en A/B/C/D les variable testées dans les conditions
Rajoute donc les lignes :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Avant le Do While
Mets un point d'arret au niveau de Do While (un click sur le bandeau gris en
regard)
Exécute le code
Il doit s'arréter à ce point
A chaque arrêt passes ta souris sur A/B/C/D pour en connaitre les valeurs à
ce stade de l'éxécution
Si toutes les conditions sont remplies aprés avoir activé F5 du clavier
regarde dans le classeur le résultat obtenu
recommence l'opération jusqu'à la fin de l'éxécution
Attention :
si tu souhaites que les 2 conditions soient réunies pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text > > Sheets("Funds").Range("D1").Value Then
si tu souhaites qu'une conditions ou l'autre soit vraie pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) or
sheets("media").range("d" & cpt_media).text > > Sheets("Funds").Range("D1").Value Then
Bien choisir la bonne ligne de commande
Dis moi ce que tu as constaté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
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Rebonjour à toi
A la solution de Daniel je te propose une autre possibilité
If Condition 1 Then
If condition 2 or condition 3 then
Conséquence(s)
End If
End If
Toujour bon à connaîtreQuand j'ai 3 conditions: il faut que la premiere soit vraie, ET puis
la deuxieme OU la troisieme, comment tu t'y prends?
le IF .... AND..... OR....THEN ne marche pas car le OR va l'emporter
sur le premier IF et AND.....
On 10 août, 11:56, FFO wrote:Rebonjours à toi
J'ai utilisé la même instruction que toi :
For i = 1 To 27
Qui donc se répète 2 fois dans le code
Il serait donc bon de choisir 2 variables différentes
Je te propose de changer la 2° ainsi :
For j = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(j) &
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(j) 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) .Va lue
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(j)
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
Remplace ce bout de code et réessaie
Concernant les conditions je te propose ceci :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Je décrite en A/B/C/D les variable testées dans les conditions
Rajoute donc les lignes :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Avant le Do While
Mets un point d'arret au niveau de Do While (un click sur le bandeau gris en
regard)
Exécute le code
Il doit s'arréter à ce point
A chaque arrêt passes ta souris sur A/B/C/D pour en connaitre les v aleurs à
ce stade de l'éxécution
Si toutes les conditions sont remplies aprés avoir activé F5 du c lavier
regarde dans le classeur le résultat obtenu
recommence l'opération jusqu'à la fin de l'éxécution
Attention :
si tu souhaites que les 2 conditions soient réunies pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
si tu souhaites qu'une conditions ou l'autre soit vraie pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) or
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Bien choisir la bonne ligne de commande
Dis moi ce que tu as constatéBonjour FFO
Merci pour la cure d'amaigrissement c'est bien plus joli, je vais p lus
tard me pencher et en tirer les lecons.
Bon par contre plus rien ne s'affiche dans la feuille result, a cro ire
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 = co lonne 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 "an d", ça doit le
faire. Sinon, le mieux est de télécharger ton classeur surw ww.cjoint.comet
de poster l'adresse générée. N'oublie pas de remplacer le s éventuelles
données confidentielles
Cordialement.
Daniel
"lglux" a écrit dans le message d e news:
Bonsoir a tous,
Malgré la mine d'or présente sur le forum, je ne dois pas u tiliser 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 pe u fier
d'avoir mis en place)
Voilà j'aimerai copier une ligne (table "media") suivant plus ieurs
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 tr ois
criteres.
Pour faire simple, j'aimerai la copie de la ligne fonds + la co pie 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? comm ent
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) = Ta b_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 m ieux
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) =
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Rebonjour à toi
A la solution de Daniel je te propose une autre possibilité
If Condition 1 Then
If condition 2 or condition 3 then
Conséquence(s)
End If
End If
Toujour bon à connaître
Quand j'ai 3 conditions: il faut que la premiere soit vraie, ET puis
la deuxieme OU la troisieme, comment tu t'y prends?
le IF .... AND..... OR....THEN ne marche pas car le OR va l'emporter
sur le premier IF et AND.....
On 10 août, 11:56, FFO <F...@discussions.microsoft.com> wrote:
Rebonjours à toi
J'ai utilisé la même instruction que toi :
For i = 1 To 27
Qui donc se répète 2 fois dans le code
Il serait donc bon de choisir 2 variables différentes
Je te propose de changer la 2° ainsi :
For j = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(j) &
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(j) 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) .Va lue
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(j)
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
Remplace ce bout de code et réessaie
Concernant les conditions je te propose ceci :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Je décrite en A/B/C/D les variable testées dans les conditions
Rajoute donc les lignes :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Avant le Do While
Mets un point d'arret au niveau de Do While (un click sur le bandeau gris en
regard)
Exécute le code
Il doit s'arréter à ce point
A chaque arrêt passes ta souris sur A/B/C/D pour en connaitre les v aleurs à
ce stade de l'éxécution
Si toutes les conditions sont remplies aprés avoir activé F5 du c lavier
regarde dans le classeur le résultat obtenu
recommence l'opération jusqu'à la fin de l'éxécution
Attention :
si tu souhaites que les 2 conditions soient réunies pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
si tu souhaites qu'une conditions ou l'autre soit vraie pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) or
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Bien choisir la bonne ligne de commande
Dis moi ce que tu as constaté
Bonjour FFO
Merci pour la cure d'amaigrissement c'est bien plus joli, je vais p lus
tard me pencher et en tirer les lecons.
Bon par contre plus rien ne s'affiche dans la feuille result, a cro ire
que le deuxieme critere avec le "and" passe mal, bizarre
MERCI !!
On 10 août, 10:29, lglux <loic.guiller...@gmail.com> 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 = co lonne I
ou "*"
MERCI !!
On 10 août, 09:53, "Daniel" <dZZZcolarde...@free.fr> wrote:
Bonjour.
C'est difficile de se faire une idée, mais, oui, avec des "an d", ça doit le
faire. Sinon, le mieux est de télécharger ton classeur surw ww.cjoint.comet
de poster l'adresse générée. N'oublie pas de remplacer le s éventuelles
données confidentielles
Cordialement.
Daniel
"lglux" <loic.guiller...@gmail.com> a écrit dans le message d e news:
1186691248.327243.280...@m37g2000prh.googlegroups.com...
Bonsoir a tous,
Malgré la mine d'or présente sur le forum, je ne dois pas u tiliser 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 pe u fier
d'avoir mis en place)
Voilà j'aimerai copier une ligne (table "media") suivant plus ieurs
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 tr ois
criteres.
Pour faire simple, j'aimerai la copie de la ligne fonds + la co pie 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? comm ent
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) = Ta b_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 m ieux
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) =
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Rebonjour à toi
A la solution de Daniel je te propose une autre possibilité
If Condition 1 Then
If condition 2 or condition 3 then
Conséquence(s)
End If
End If
Toujour bon à connaîtreQuand j'ai 3 conditions: il faut que la premiere soit vraie, ET puis
la deuxieme OU la troisieme, comment tu t'y prends?
le IF .... AND..... OR....THEN ne marche pas car le OR va l'emporter
sur le premier IF et AND.....
On 10 août, 11:56, FFO wrote:Rebonjours à toi
J'ai utilisé la même instruction que toi :
For i = 1 To 27
Qui donc se répète 2 fois dans le code
Il serait donc bon de choisir 2 variables différentes
Je te propose de changer la 2° ainsi :
For j = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(j) &
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(j) 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) .Va lue
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(j)
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
Remplace ce bout de code et réessaie
Concernant les conditions je te propose ceci :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Je décrite en A/B/C/D les variable testées dans les conditions
Rajoute donc les lignes :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Avant le Do While
Mets un point d'arret au niveau de Do While (un click sur le bandeau gris en
regard)
Exécute le code
Il doit s'arréter à ce point
A chaque arrêt passes ta souris sur A/B/C/D pour en connaitre les v aleurs à
ce stade de l'éxécution
Si toutes les conditions sont remplies aprés avoir activé F5 du c lavier
regarde dans le classeur le résultat obtenu
recommence l'opération jusqu'à la fin de l'éxécution
Attention :
si tu souhaites que les 2 conditions soient réunies pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
si tu souhaites qu'une conditions ou l'autre soit vraie pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) or
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Bien choisir la bonne ligne de commande
Dis moi ce que tu as constatéBonjour FFO
Merci pour la cure d'amaigrissement c'est bien plus joli, je vais p lus
tard me pencher et en tirer les lecons.
Bon par contre plus rien ne s'affiche dans la feuille result, a cro ire
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 = co lonne 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 "an d", ça doit le
faire. Sinon, le mieux est de télécharger ton classeur surw ww.cjoint.comet
de poster l'adresse générée. N'oublie pas de remplacer le s éventuelles
données confidentielles
Cordialement.
Daniel
"lglux" a écrit dans le message d e news:
Bonsoir a tous,
Malgré la mine d'or présente sur le forum, je ne dois pas u tiliser 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 pe u fier
d'avoir mis en place)
Voilà j'aimerai copier une ligne (table "media") suivant plus ieurs
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 tr ois
criteres.
Pour faire simple, j'aimerai la copie de la ligne fonds + la co pie 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? comm ent
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) = Ta b_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 m ieux
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) =
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bizarrement la solution de daniel marche, et bien que la tienne semble
tres logique, elle ne marche pas (aucun results affiché)
merci encore a vous, la je pense que deja je suis sur de bonnes bases,
mes questions ont été resolues, merci encore!
On 10 août, 13:00, FFO wrote:Rebonjour à toi
A la solution de Daniel je te propose une autre possibilité
If Condition 1 Then
If condition 2 or condition 3 then
Conséquence(s)
End If
End If
Toujour bon à connaîtreQuand j'ai 3 conditions: il faut que la premiere soit vraie, ET puis
la deuxieme OU la troisieme, comment tu t'y prends?
le IF .... AND..... OR....THEN ne marche pas car le OR va l'emporter
sur le premier IF et AND.....
On 10 août, 11:56, FFO wrote:Rebonjours à toi
J'ai utilisé la même instruction que toi :
For i = 1 To 27
Qui donc se répète 2 fois dans le code
Il serait donc bon de choisir 2 variables différentes
Je te propose de changer la 2° ainsi :
For j = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(j) &
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(j) 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(j)
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
Remplace ce bout de code et réessaie
Concernant les conditions je te propose ceci :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text > > > > Sheets("Funds").Range("D1").Value Then
Je décrite en A/B/C/D les variable testées dans les conditions
Rajoute donc les lignes :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Avant le Do While
Mets un point d'arret au niveau de Do While (un click sur le bandeau gris en
regard)
Exécute le code
Il doit s'arréter à ce point
A chaque arrêt passes ta souris sur A/B/C/D pour en connaitre les valeurs à
ce stade de l'éxécution
Si toutes les conditions sont remplies aprés avoir activé F5 du clavier
regarde dans le classeur le résultat obtenu
recommence l'opération jusqu'à la fin de l'éxécution
Attention :
si tu souhaites que les 2 conditions soient réunies pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text > > > > Sheets("Funds").Range("D1").Value Then
si tu souhaites qu'une conditions ou l'autre soit vraie pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) or
sheets("media").range("d" & cpt_media).text > > > > Sheets("Funds").Range("D1").Value Then
Bien choisir la bonne ligne de commande
Dis moi ce que tu as constaté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) > >
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bizarrement la solution de daniel marche, et bien que la tienne semble
tres logique, elle ne marche pas (aucun results affiché)
merci encore a vous, la je pense que deja je suis sur de bonnes bases,
mes questions ont été resolues, merci encore!
On 10 août, 13:00, FFO <F...@discussions.microsoft.com> wrote:
Rebonjour à toi
A la solution de Daniel je te propose une autre possibilité
If Condition 1 Then
If condition 2 or condition 3 then
Conséquence(s)
End If
End If
Toujour bon à connaître
Quand j'ai 3 conditions: il faut que la premiere soit vraie, ET puis
la deuxieme OU la troisieme, comment tu t'y prends?
le IF .... AND..... OR....THEN ne marche pas car le OR va l'emporter
sur le premier IF et AND.....
On 10 août, 11:56, FFO <F...@discussions.microsoft.com> wrote:
Rebonjours à toi
J'ai utilisé la même instruction que toi :
For i = 1 To 27
Qui donc se répète 2 fois dans le code
Il serait donc bon de choisir 2 variables différentes
Je te propose de changer la 2° ainsi :
For j = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(j) &
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(j) 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(j)
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
Remplace ce bout de code et réessaie
Concernant les conditions je te propose ceci :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text > > > > Sheets("Funds").Range("D1").Value Then
Je décrite en A/B/C/D les variable testées dans les conditions
Rajoute donc les lignes :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Avant le Do While
Mets un point d'arret au niveau de Do While (un click sur le bandeau gris en
regard)
Exécute le code
Il doit s'arréter à ce point
A chaque arrêt passes ta souris sur A/B/C/D pour en connaitre les valeurs à
ce stade de l'éxécution
Si toutes les conditions sont remplies aprés avoir activé F5 du clavier
regarde dans le classeur le résultat obtenu
recommence l'opération jusqu'à la fin de l'éxécution
Attention :
si tu souhaites que les 2 conditions soient réunies pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text > > > > Sheets("Funds").Range("D1").Value Then
si tu souhaites qu'une conditions ou l'autre soit vraie pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) or
sheets("media").range("d" & cpt_media).text > > > > Sheets("Funds").Range("D1").Value Then
Bien choisir la bonne ligne de commande
Dis moi ce que tu as constaté
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 <loic.guiller...@gmail.com> 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" <dZZZcolarde...@free.fr> 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" <loic.guiller...@gmail.com> a écrit dans le message de news:
1186691248.327243.280...@m37g2000prh.googlegroups.com...
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) > >
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bizarrement la solution de daniel marche, et bien que la tienne semble
tres logique, elle ne marche pas (aucun results affiché)
merci encore a vous, la je pense que deja je suis sur de bonnes bases,
mes questions ont été resolues, merci encore!
On 10 août, 13:00, FFO wrote:Rebonjour à toi
A la solution de Daniel je te propose une autre possibilité
If Condition 1 Then
If condition 2 or condition 3 then
Conséquence(s)
End If
End If
Toujour bon à connaîtreQuand j'ai 3 conditions: il faut que la premiere soit vraie, ET puis
la deuxieme OU la troisieme, comment tu t'y prends?
le IF .... AND..... OR....THEN ne marche pas car le OR va l'emporter
sur le premier IF et AND.....
On 10 août, 11:56, FFO wrote:Rebonjours à toi
J'ai utilisé la même instruction que toi :
For i = 1 To 27
Qui donc se répète 2 fois dans le code
Il serait donc bon de choisir 2 variables différentes
Je te propose de changer la 2° ainsi :
For j = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(j) &
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(j) 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(j)
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
Remplace ce bout de code et réessaie
Concernant les conditions je te propose ceci :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text > > > > Sheets("Funds").Range("D1").Value Then
Je décrite en A/B/C/D les variable testées dans les conditions
Rajoute donc les lignes :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Avant le Do While
Mets un point d'arret au niveau de Do While (un click sur le bandeau gris en
regard)
Exécute le code
Il doit s'arréter à ce point
A chaque arrêt passes ta souris sur A/B/C/D pour en connaitre les valeurs à
ce stade de l'éxécution
Si toutes les conditions sont remplies aprés avoir activé F5 du clavier
regarde dans le classeur le résultat obtenu
recommence l'opération jusqu'à la fin de l'éxécution
Attention :
si tu souhaites que les 2 conditions soient réunies pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text > > > > Sheets("Funds").Range("D1").Value Then
si tu souhaites qu'une conditions ou l'autre soit vraie pour copier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) or
sheets("media").range("d" & cpt_media).text > > > > Sheets("Funds").Range("D1").Value Then
Bien choisir la bonne ligne de commande
Dis moi ce que tu as constaté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) > >
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Rebonjour à toi
Escuses moi d'insister mais j'aimerai voir les lignes qui ne marches pas
avec ma solution telles que tu les as écrites pour en cerner l'origine
Toutes mes configurations avec ce type d'approche n'ont jamais posé une
quelconque difficulté
Merci d'avanceBizarrement la solution de daniel marche, et bien que la tienne semble
tres logique, elle ne marche pas (aucun results affiché)
merci encore a vous, la je pense que deja je suis sur de bonnes bases,
mes questions ont été resolues, merci encore!
On 10 août, 13:00, FFO wrote:Rebonjour à toi
A la solution de Daniel je te propose une autre possibilité
If Condition 1 Then
If condition 2 or condition 3 then
Conséquence(s)
End If
End If
Toujour bon à connaîtreQuand j'ai 3 conditions: il faut que la premiere soit vraie, ET puis
la deuxieme OU la troisieme, comment tu t'y prends?
le IF .... AND..... OR....THEN ne marche pas car le OR va l'emporter
sur le premier IF et AND.....
On 10 août, 11:56, FFO wrote:Rebonjours à toi
J'ai utilisé la même instruction que toi :
For i = 1 To 27
Qui donc se répète 2 fois dans le code
Il serait donc bon de choisir 2 variables différentes
Je te propose de changer la 2° ainsi :
For j = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(j) &
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(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Sheets("résult").Range("a" & ligne_courante, "f" & ligne_couran te) ..Value =
Sheets("Funds").Range("a" & ligne_courante, "f" & ligne_courante) .Value
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(j)
Sheets("résult").Range("h" & ligne_courante, "j" & ligne_couran te) ..Value =
Sheets("media").Range("c" & cpt_media, "e" & cpt_media) .Value
ligne_courante = ligne_courante + 1
End If
Remplace ce bout de code et réessaie
Concernant les conditions je te propose ceci :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Je décrite en A/B/C/D les variable testées dans les conditions
Rajoute donc les lignes :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Avant le Do While
Mets un point d'arret au niveau de Do While (un click sur le band eau gris en
regard)
Exécute le code
Il doit s'arréter à ce point
A chaque arrêt passes ta souris sur A/B/C/D pour en connaitre l es valeurs à
ce stade de l'éxécution
Si toutes les conditions sont remplies aprés avoir activé F5 du clavier
regarde dans le classeur le résultat obtenu
recommence l'opération jusqu'à la fin de l'éxécution
Attention :
si tu souhaites que les 2 conditions soient réunies pour copie r, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
si tu souhaites qu'une conditions ou l'autre soit vraie pour cop ier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) or
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Bien choisir la bonne ligne de commande
Dis moi ce que tu as constatéBonjour FFO
Merci pour la cure d'amaigrissement c'est bien plus joli, je va is 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 remplace r les éventuelles
données confidentielles
Cordialement.
Daniel
"lglux" a écrit dans le messa ge de news:
Bonsoir a tous,
Malgré la mine d'or présente sur le forum, je ne dois p as 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 pa s 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 d e trois
criteres.
Pour faire simple, j'aimerai la copie de la ligne fonds + l a copie de
la ligne media (a la suite sur la meme ligne) sur une trois ieme
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 et re 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) =
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Rebonjour à toi
Escuses moi d'insister mais j'aimerai voir les lignes qui ne marches pas
avec ma solution telles que tu les as écrites pour en cerner l'origine
Toutes mes configurations avec ce type d'approche n'ont jamais posé une
quelconque difficulté
Merci d'avance
Bizarrement la solution de daniel marche, et bien que la tienne semble
tres logique, elle ne marche pas (aucun results affiché)
merci encore a vous, la je pense que deja je suis sur de bonnes bases,
mes questions ont été resolues, merci encore!
On 10 août, 13:00, FFO <F...@discussions.microsoft.com> wrote:
Rebonjour à toi
A la solution de Daniel je te propose une autre possibilité
If Condition 1 Then
If condition 2 or condition 3 then
Conséquence(s)
End If
End If
Toujour bon à connaître
Quand j'ai 3 conditions: il faut que la premiere soit vraie, ET puis
la deuxieme OU la troisieme, comment tu t'y prends?
le IF .... AND..... OR....THEN ne marche pas car le OR va l'emporter
sur le premier IF et AND.....
On 10 août, 11:56, FFO <F...@discussions.microsoft.com> wrote:
Rebonjours à toi
J'ai utilisé la même instruction que toi :
For i = 1 To 27
Qui donc se répète 2 fois dans le code
Il serait donc bon de choisir 2 variables différentes
Je te propose de changer la 2° ainsi :
For j = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(j) &
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(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Sheets("résult").Range("a" & ligne_courante, "f" & ligne_couran te) ..Value =
Sheets("Funds").Range("a" & ligne_courante, "f" & ligne_courante) .Value
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(j)
Sheets("résult").Range("h" & ligne_courante, "j" & ligne_couran te) ..Value =
Sheets("media").Range("c" & cpt_media, "e" & cpt_media) .Value
ligne_courante = ligne_courante + 1
End If
Remplace ce bout de code et réessaie
Concernant les conditions je te propose ceci :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Je décrite en A/B/C/D les variable testées dans les conditions
Rajoute donc les lignes :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Avant le Do While
Mets un point d'arret au niveau de Do While (un click sur le band eau gris en
regard)
Exécute le code
Il doit s'arréter à ce point
A chaque arrêt passes ta souris sur A/B/C/D pour en connaitre l es valeurs à
ce stade de l'éxécution
Si toutes les conditions sont remplies aprés avoir activé F5 du clavier
regarde dans le classeur le résultat obtenu
recommence l'opération jusqu'à la fin de l'éxécution
Attention :
si tu souhaites que les 2 conditions soient réunies pour copie r, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
si tu souhaites qu'une conditions ou l'autre soit vraie pour cop ier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) or
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Bien choisir la bonne ligne de commande
Dis moi ce que tu as constaté
Bonjour FFO
Merci pour la cure d'amaigrissement c'est bien plus joli, je va is 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 <loic.guiller...@gmail.com> 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" <dZZZcolarde...@free.fr> 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 remplace r les éventuelles
données confidentielles
Cordialement.
Daniel
"lglux" <loic.guiller...@gmail.com> a écrit dans le messa ge de news:
1186691248.327243.280...@m37g2000prh.googlegroups.com...
Bonsoir a tous,
Malgré la mine d'or présente sur le forum, je ne dois p as 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 pa s 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 d e trois
criteres.
Pour faire simple, j'aimerai la copie de la ligne fonds + l a copie de
la ligne media (a la suite sur la meme ligne) sur une trois ieme
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 et re 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) =
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Rebonjour à toi
Escuses moi d'insister mais j'aimerai voir les lignes qui ne marches pas
avec ma solution telles que tu les as écrites pour en cerner l'origine
Toutes mes configurations avec ce type d'approche n'ont jamais posé une
quelconque difficulté
Merci d'avanceBizarrement la solution de daniel marche, et bien que la tienne semble
tres logique, elle ne marche pas (aucun results affiché)
merci encore a vous, la je pense que deja je suis sur de bonnes bases,
mes questions ont été resolues, merci encore!
On 10 août, 13:00, FFO wrote:Rebonjour à toi
A la solution de Daniel je te propose une autre possibilité
If Condition 1 Then
If condition 2 or condition 3 then
Conséquence(s)
End If
End If
Toujour bon à connaîtreQuand j'ai 3 conditions: il faut que la premiere soit vraie, ET puis
la deuxieme OU la troisieme, comment tu t'y prends?
le IF .... AND..... OR....THEN ne marche pas car le OR va l'emporter
sur le premier IF et AND.....
On 10 août, 11:56, FFO wrote:Rebonjours à toi
J'ai utilisé la même instruction que toi :
For i = 1 To 27
Qui donc se répète 2 fois dans le code
Il serait donc bon de choisir 2 variables différentes
Je te propose de changer la 2° ainsi :
For j = 1 To 27
pays_a_tester = Sheets("Funds").Range(Tab_lettres(j) &
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(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Sheets("résult").Range("a" & ligne_courante, "f" & ligne_couran te) ..Value =
Sheets("Funds").Range("a" & ligne_courante, "f" & ligne_courante) .Value
Sheets("résult").Range("g" & ligne_courante) = Tab_pays(j)
Sheets("résult").Range("h" & ligne_courante, "j" & ligne_couran te) ..Value =
Sheets("media").Range("c" & cpt_media, "e" & cpt_media) .Value
ligne_courante = ligne_courante + 1
End If
Remplace ce bout de code et réessaie
Concernant les conditions je te propose ceci :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Do While Sheets("media").Range("b" & cpt_media).Text <> ""
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Je décrite en A/B/C/D les variable testées dans les conditions
Rajoute donc les lignes :
A = Sheets("media").Range("b" & cpt_media).Text
B = Tab_pays(j)
C = sheets("media").range("d" & cpt_media).text
D = Sheets("Funds").Range("D1").Value
Avant le Do While
Mets un point d'arret au niveau de Do While (un click sur le band eau gris en
regard)
Exécute le code
Il doit s'arréter à ce point
A chaque arrêt passes ta souris sur A/B/C/D pour en connaitre l es valeurs à
ce stade de l'éxécution
Si toutes les conditions sont remplies aprés avoir activé F5 du clavier
regarde dans le classeur le résultat obtenu
recommence l'opération jusqu'à la fin de l'éxécution
Attention :
si tu souhaites que les 2 conditions soient réunies pour copie r, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) and
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
si tu souhaites qu'une conditions ou l'autre soit vraie pour cop ier, la
commande est :
If Sheets("media").Range("b" & cpt_media).Text = Tab_pays(j) or
sheets("media").range("d" & cpt_media).text =
Sheets("Funds").Range("D1").Value Then
Bien choisir la bonne ligne de commande
Dis moi ce que tu as constatéBonjour FFO
Merci pour la cure d'amaigrissement c'est bien plus joli, je va is 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 remplace r les éventuelles
données confidentielles
Cordialement.
Daniel
"lglux" a écrit dans le messa ge de news:
Bonsoir a tous,
Malgré la mine d'or présente sur le forum, je ne dois p as 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 pa s 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 d e trois
criteres.
Pour faire simple, j'aimerai la copie de la ligne fonds + l a copie de
la ligne media (a la suite sur la meme ligne) sur une trois ieme
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 et re 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) =
...
plus de détails »- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -