• Initiateur de la discussion Initiateur de la discussion Quentin06
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Q

Quentin06

Guest
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
 
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:
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
 
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 😛...
Il suffit donc de tirer ensuite la formule matricielle vers le bas 😉.
En espérant que ce soit plus clair et adaptable 🙄...
Bonne journée 😎
 
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 :=))
 
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 😛.
Bon courage 😎
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 agrandir la liste
Réponses
21
Affichages
663
Réponses
5
Affichages
402
Réponses
5
Affichages
232
  • Question Question
Microsoft 365 Souci de copie
Réponses
8
Affichages
384
Retour