copier/coller cellules vers autre feuille selon condition

Nicolas33gin33!

XLDnaute Nouveau
Bonjour,

Je cherche à faire une macro pour le fichier joint.
N'y arrivant pas, je m'adresse à vous :
je souhaiterai faire un copier/coller (onglet vecteurs) des cellules A, B et C si la case "cocher" est marquée d'un X (c'est plus une liste déroulante qu'une case à cocher d'ailleurs ^^') vers l'onglet BDC - cellule C, D et G.
Sauf que comme toutes les cases ne seront pas cochées, je ne veux pas qu'il y ait une ligne avec un trou (sinon j'aurai fait un banal SI).

Exemple : je commande 1 bougie et 2 grattoirs, je veux que sur le BDC apparaisse les 2 vecteurs et c'est tout

D'avance, merci
 

Lone-wolf

XLDnaute Barbatruc
Bonjour Nicolas :)

Quand tu commence une base de données, la moindre des choses c'est de completer le tableau. Pas de code de référence, pas de prix; comment veux-tu faire pour remplir le bon de commande??? :rolleyes:

J'ai rajouté la colonne PRIX dans la feuille Vecteurs et mis les codes. J'ai corrigé aussi les codes pour l'éffacement des cellules et pour l'impression de la feuille. Regarde si ça te convient.
 

Pièces jointes

  • Classeur1.xlsm
    170.6 KB · Affichages: 87
Dernière édition:

Nicolas33gin33!

XLDnaute Nouveau
Je communique la solution au cas ou :

Bref, en F2 de ta feuille Vecteurs, insère la formule:
Code: Tout sélectionner
=SI(E2="X";LIGNE()-1;"")
et recopie vers le bas. Ceci fera apparaître la position de chaque "X" dans ton tableau.
En feuille BDC, cellule C18, écris:
Code: Tout sélectionner
=SIERREUR(INDEX(Vecteurs!A$2:A$60;PETITE.VALEUR(Vecteurs!$F$2:$F$60;LIGNES($1:1)));"")
recopie en bas également. Si tu n'avais pas de cellules fusionnées en D, E et F, tu pourrais recopier à droite aussi. Dans le cas présent, colle la même formule en D18 et modifie la référence à la plage A$2:A$60 en B$2:B$60.
Je te laisse le soin d'adapter en colonne G
 

Lone-wolf

XLDnaute Barbatruc
Re
As-tu testé la macro? Parce-qu'il n'y a pas besoin de formules, la macro le fait. Efface les X et fait une nouvelle commande. Mais avant efface les lignes du bon de commande.

Edit: dans la feuille Vecteur modifie la ligne par celle-ci
If Not Intersect(Target, Range("a1:k20, n2:q20")) Is Nothing Then Exit Sub
 

Nicolas33gin33!

XLDnaute Nouveau
Je communique la solution au cas ou :

Bref, en F2 de ta feuille Vecteurs, insère la formule:
=SI(E2="X";LIGNE()-1;"")
et recopie vers le bas. Ceci fera apparaître la position de chaque "X" dans ton tableau.
En feuille BDC, cellule C18, écris:
=SIERREUR(INDEX(Vecteurs!A$2:A$60;PETITE.VALEUR(Vecteurs!$F$2:$F$60;LIGNES($1:1)));"")
recopie en bas également. Si tu n'avais pas de cellules fusionnées en D, E et F, tu pourrais recopier à droite aussi. Dans le cas présent, colle la même formule en D18 et modifie la référence à la plage A$2:A$60 en B$2:B$60.
Je te laisse le soin d'adapter en colonne G
 

Discussions similaires

Statistiques des forums

Discussions
311 730
Messages
2 081 981
Membres
101 855
dernier inscrit
alexis345