Copie de Donnees

Quentin06

XLDnaute Nouveau
Bonjour à tous,
Je poste ce message car malgrès le moteur de recherche je n'ai pas su trouver la réponse à mon problème posé.

Pour etre le plus claire possible:

- Je possède une feuille avec:
* Colonne A : liste d'article
* Colonne B: Des cases à cocher

- Dans une autre feuille:
*Colonne A: les même articles
*Colonne B: un Control qui renvoie VRAI ou FAUX selon si l'article est coché ou pas dans la première feuille.

Mon problème est le suivant: Dans une troisième feuille, je voudrais faire une facture automatique; Je voudrais que les articles cochés dans la première feuille soit automatiquement listés les uns en dessous des autres.
J'ai essayé avec des contrôles sur le VRAI ou FAUX de la seconde feuille mais de cette manière je peux me retrouver avec de nombreuses lignes vides.

Quelqu'un aurait-il une solution?
Merci beaucoup pour votre précieuse aide,

Quentin
 

nyko283

XLDnaute Occasionnel
Re : Copie de Donnees

Bonjour Quentin, le forum,

En passant par du vb6 tu peut faire une boucle sur le nombre de ligne de ta feuille 2 avec une condition If

dans les grandes lignes tu auras :
VB:
ma sub()
dim i as integer,x as integer,ligne as integer,colonne as integer
x= 'recherche de la derniere cellule non vide de la feuille 2
ligne = 'numero de ligne à partir du quel le premier article va etre copier
colonne='numero de colonne ou les articles doivent etre copié
for i =(ligne de ton premier article sur la feuil 2) to x
If thisworkbook.worksheets("Feuil2").cells(i,2).value="VRAI" then
     thisworkbook.worksheets("Feuil3").cells(ligne,colonne).value=thisworkbook.worksheets("Feuil2").cells(i,1).value    ' copie de l'article qui est coché
ligne = ligne+1
end if
next i


end sub
tu n'as plus cas changer les commentaires et tu devrais avoir l resultat souhaité.

Si tu as encore besoin d'aide pense à joindre ton fichier.
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Copie de Donnees

Bonjour Quentin06 et bienvenue :), Niko :),
Un petit fichier test aurait été le bienvenu :rolleyes:...
Un exemple par formule matricielle :p.
Bonne soirée :cool:
 

Pièces jointes

  • Quentin06.xls
    29 KB · Affichages: 62
  • Quentin06.xls
    29 KB · Affichages: 61
  • Quentin06.xls
    29 KB · Affichages: 62

Quentin06

XLDnaute Nouveau
Re : Copie de Donnees

Bonjour nyko, JPN

Merci beaucoup de vos réponses, elles m'ont fait quelque peu cogiter!

Malheureusement je ne géré que très peu le VBA, je ne sais donc pas à quel endroit affecter la macro.

JNP j'ai cru comprendre qu'il s'agissait d'une formule matricielle, et j'ai donc essayé de l'affecter à mon cas... sans succès!
Pourrais-tu donner un peu plus de détail sur le fonctionnement de la formule?

Je joint le fichier test des que possible, ce sera certainement plus facile!

Merci beaucoup à vous,

Quentin
 

JNP

XLDnaute Barbatruc
Re : Copie de Donnees

Re :),
La formule globale est
Code:
=SI(ESTERREUR(INDEX($A$1:$A$10;PETITE.VALEUR(SI($B$1:$B$10=VRAI;LIGNE($A$1:A$10));LIGNES($1:1))));"";INDEX($A$1:$A$10;PETITE.VALEUR(SI($B$1:$B$10=VRAI;LIGNE($A$1:A$10));LIGNES($1:1))))
à valider avec Ctrl+Maj+Enter.
Le Si sert à ne rien mettre en cas d'erreur.
EstErreur teste si la formule
Code:
INDEX($A$1:$A$10;PETITE.VALEUR(SI($B$1:$B$10=VRAI;LIGNE($A$1:A$10));LIGNES($1:1))))
est une erreur ou pas, dans le cas contraire, elle renvoie sa valeur.
La formule en elle même :
Code:
SI($B$1:$B$10=VRAI;LIGNE($A$1:A$10))
va stocker la ligne dans une matrice dans le cas où la valeur en B est vraie.
Du fait,
Code:
PETITE.VALEUR( ... ;LIGNES($1:1))
va aller chercher la première valeur de ligne mémorisée dans la matrice, Lignes($1:1)=1, qui va devenir en tirant la formule Lignes($1:2) qui donnera 2 et ainsi de suite.
Enfin
Code:
INDEX($A$1:$A$10; ... )
va ramener la valeur en A sur la ligne définie par Petite.Valeur :p...
Il suffit donc de tirer ensuite la formule matricielle vers le bas ;).
En espérant que ce soit plus clair et adaptable :rolleyes:...
Bonne journée :cool:
 

supercrapaud

XLDnaute Occasionnel
Re : Copie de Donnees

Tu pourrais faire plus simple : il te suffirait de mettre tes articles en liste (séparés par des titres si tu le souhaites) avec une colonne où tu mettrais des "X". une fois fait tu pourrais ensuite dans ta facture mettre une formule du style =SI(Choix!D16="X";Choix!C16;"") et tu pourrais faire de même si tu mettais tes prix à côté. comme cela pas de marco ni rien. C'est un peu basique mais ça marche. Sinon, regarde mon fichier de gestion de stock. j'ai fait un bon de commande où il te suffit de double-cliquer sur un article pour qu'il s'impute dans ton bon. Tu pourrais t'en inspirer (ou l'utiliser carrément :=))
 

JNP

XLDnaute Barbatruc
Re : Copie de Donnees

Re :),
Code:
=SI(ESTERREUR(INDEX(Donnee!$D$14:$D$56;PETITE.VALEUR(SI(Donnee!$E$14:$E$56=VRAI;LIGNE(Donnee!$D$14:$D$56));LIGNES($1:1))-13));"";INDEX(Donnee!$D$14:$D$56;PETITE.VALEUR(SI(Donnee!$E$14:$E$56=VRAI;LIGNE(Donnee!$D$14:$D$56));LIGNES($1:1))-13))
en B27 :p.
Bon courage :cool:
 

Quentin06

XLDnaute Nouveau
Re : Copie de Donnees

Hello,

Je n'ai pas réussi avec la formule matricielle! Trop compliqué pour moi je pense!
En tout cas merci beaucoup!

J'ai finalement réussit avec quelque chose de plus simple:
Sur la colonne a côté de la colonne VRAI/FAUX, j'ai fais en sorte de noter Rien quand c'est egale à Faux, et 1 quand c'est vrai qui s'incrémente a chaque nouvelle ligne:

=SI(A83<>"";MAX($B$82:B82)+1;" ")

Ainsi, je n'ai plus qu'a faire une rechercheV dans ma feuille "facture"!

Merci beaucoup de votre aide, qui permet vraiment de prendre du niveau!

A trés vite
Quentin
 

Discussions similaires

Réponses
6
Affichages
448

Statistiques des forums

Discussions
312 497
Messages
2 088 984
Membres
103 998
dernier inscrit
Gotteland