| ||||||||
Petit astucien | Bonjour, Je souhaite copier dans une 2eme feuille (feuil2) certaines colonnes de la 1ere feuille avec des conditions sur la colonne C (Nom du produit) Nom du produit doit être égal à "Garrigue bipente" ou "Garrigue toit" Je joins une image de la feuil1 et du résultat souhaité (feuil2) Merci pour votre aide
| |||||||
Publicité | ||||||||
| ||||||||
Astucien ![]() | Voila comment je procéderais : Dans D1 de la feuille2 : Dans E1 de la feuille2 : Dans F1 de la feuille2 : Dans J1 de la feuille2 : Reporter toutes ces lignes sur toute la feuille2 (Copier/coller) Le test a été fait à partir de Calc de LibreOffice mais c'est sensiblement pareil sur Excel. Modifié par Nostradamus8 le 30/09/2016 11:58 | |||||||
Petit astucien | Merci pour votre retour. Cependant est-il possible de le faire par une macro qui puisse être lancée ?
| |||||||
Petit astucien | quand je tape : =Si(OU(Feuille1.C1="Garrigue bipente";Feuille1.C1="Garrigue toit";Feuille1.A1;"") j'ai un message d'erreur. J'ai rajouté une parenthese à la fin mais cela ne marche pas non plus. | |||||||
Astucien ![]() | Au temps pour moi : =Si(OU(Feuille1.C1="Garrigue bipente";Feuille1.C1="Garrigue toit");Feuille1.A1;"") | |||||||
Petit astucien | Bonjour, Une autre solution en insérant un tableau croisé dynamique Sélectionner une cellule quelconque du TCD pour faire apparaître la liste de champs de TCD L'avantage c'est le paramétrage très rapide et presque sans limites Cordialement http://www.cjoint.com/c/FIEmmmY1VaV
| |||||||
Petit astucien | Merci à vous 2 pour vos retours : @Nostradamus8 == > j'ai essayé la formule mais voilà le résultat J'ai adapté C2 au lieu de C1 car C1= etiquette de titres J'ai aussi vérifié les feuilles s'appellent bien Feuil1 et Feuil2
@jpr73 ==> la solution du TCD est intéressante. Cependant je n'ai pas su enlever les totaux pour avoir le même affichage que votre fichier Comment faites vous ?
| |||||||
Petit astucien | Bonjour, Sélectionner le TCD > Outils de TCD > Création Disposition > Sous totaux > Ne pas afficher les sous totaux Disposition > Totaux généraux > Désactivé pour les lignes et les colonnes Cordialement | |||||||
Petit astucien | indications précises. J'ai pu le reproduire. Merci | |||||||
Astucien ![]() | Je ne vois pas d'erreur dans ta formule. Peut-être qu'en excel, c'est un peut différent. Par exemple OR au lieu de OU " " au lieu de "" à la fin de la formule. Mais ça m'étonnerait quand même. Ou voir du coté des formatage de cellules.... | |||||||
Astucien ![]() | Essaye de mettre devant chaque Feuil : $ Ce qui donne : =Si(OU($Feuil1.C2="Garrigue bipente";$Feuil1.C2="Garrigue toit");$Feuil1.A2;"")
| |||||||
![]() ![]() | Bonjour, C'est le point entre le nom de feuille et la référence de plage qui est inadéquat dans Excel. =SI(OU(Feuil1!C2="Garrigue bipente";Feuil1!C2="Garrigue toit");Feuil1!A2;"") Cordialement. | |||||||
![]() ![]() | Re, Solution macro : Sub ExtracProduit() Pour positionner autrement les résultats, remplacer "A1" par la référence de cellule que l'on souhaite comme cellule supérieure gauche de la plage résultats. Cordialement. | |||||||
Petit astucien | Merci Ferrand, les 2 solutions marchent maintenant. J'ai compris la 2ème partie du code, cependant, pouvez-vous juste m'expliquer un peu la 1ère partie en me rajoutant des commentaires : Il me semble que vous avez défini un tableau, ensuite je suis perdu !!!!!
kpe = Array(1, 3, 6, 10) ReDim Tpe(3, 0)
With Worksheets("Feuil1") If .AutoFilterMode Then If .FilterMode Then .ShowAllData End If For k = 0 To 3 Tpe(k, 0) = .Cells(1, kpe(k)) Next k n = .Cells(.Rows.Count, 1).End(xlUp).Row For i = 2 To n If Replace(LCase(.Cells(i, 3)), "bipente", "toit") = "garrigue toit" Then p = p + 1: ReDim Preserve Tpe(3, p) For k = 0 To 3 Tpe(k, p) = .Cells(i, kpe(k)) Next k End If Next i End With | |||||||
![]() ![]() | Bonsoir, Quelques explications que tu demandes : kpe = Array(1, 3, 6, 10) ReDim Tpe(3, 0) With Worksheets("Feuil1") If .AutoFilterMode Then For k = 0 To 3 n = .Cells(.Rows.Count, 1).End(xlUp).Row For i = 2 To n If Replace(LCase(.Cells(i, 3)), "bipente", "toit") = "garrigue toit" Then p = p + 1: ReDim Preserve Tpe(3, p) For k = 0 To 3 A noter que le tableau de résultats ainsi constitué comporte en première dimension les colonnes et en seconde les lignes (ce qui était justifié par le nombre variable de lignes. L'affectation du tableau à la feuille cible se fait directement en une seule fois, après dimensionnement de la plage cible aux dimension du tableau, et en utilisant la fonction Transpose pour rétablir la position des lignes et colonnes. Cordialement. | |||||||
Petit astucien | Un GRAND MERCI "ferrand". Vos explications sont très claires et cela me permettra d'avancer encore plus dans les tâches à faire sous Excel. Je peux clôturer le post. | |||||||
Petit astucien | Bonjour, J'ai un autre point de blocage : j'ai une colonne contenant des dates dans ma feuille 1 et une fois la macro lancée, la colonne est bien copiée dans la feuille 2. Cependant le jour et le mois sont permutés. Comment faire pour garder mon format initial ?
Feuille 1
Feuille 2 (après copie avec la macro, le jour et le mois sont permutés) | |||||||
Astucien ![]() | Voir le format de la cellule sur la feuille 2. | |||||||
Petit astucien | J'avais déjà pensé à cela. Mais cela n'a pas résolu le problème. Jai essayé différentes possibilités avec le format de la cellule source identique à celui de la destination : Standard, date, personnalisé ........ | |||||||
Publicité | ||||||||
| ||||||||
|
Les bons plans du moment PC Astuces | Tous les Bons Plans | ||||||||||||||||||
|
Sujets relatifs | ||
|