Réalisation d'un devis

Benjy

XLDnaute Occasionnel
Bonjour à tous !!

Encore une fois je reviens vers votre forum car je recquiert votre aide.

Je n'arrive pas à joindre mon fichier celui ci est trop gros ( 500 ko ).
Et je ne dispose pas de 7zip ou winzip sur ce pc. Si quelqu'un veut bien m'aider je peux envoyer mon fichier par mail pour qu'il le compresse...

Je cherche à réaliser un devis. J'ai une première feuille qui contient des cases à cocher pour chaque article. ( environ 50 cases )
Si la case est coché il apaprait sur la ligne, la référence du produit son prix, la quantité souhaité etc. Si la case n'est pas coché il n'apparait rien. (Cela ne signifie pas que la ligne est vide. Elle contient quand même les formules...)

Ce que je souhaiterais faire c'est un devis. Sur une autre feuille j'ai un tableau a remplir ( la référence des produits choisis, leur prix etc... )
Est-il possible par macro de remplir ce tableau automatiquement en fonction des cases qui sont cochés ?

Je peux très bien dire que la premiere ligne de mon devis correspond à la première case à cocher et ainsi de suite. Seul problème si la case n'est pas cocher je me retrouve avec une ligne vide dans mon devis... Ce qui une fois imprimé ne fait pas propre.

Si quelqu'un pouvait me fournir une piste pour ce problème sa m'aiderais beaucoup.
 

Benjy

XLDnaute Occasionnel
Re : Réalisation d'un devis

Merci ! Mais je prefererais utilisé mon programme.

Une piste peut être sur le fait de supprimer une ligne vide ?
Si je copie :
AAAAAAAAAA
.........
BBBBBBBBB
CCCCCCCC
..........
DDDDDDDD
( les points étant une ligne vide )

Comment obtenir au final :
AAAAAAAAA
BBBBBBBBBB
CCCCCCCCC
DDDDDDDDD
 

Efgé

XLDnaute Barbatruc
Re : Réalisation d'un devis

Bonjour Benjy, Macpoy,
Benjy :
Pour compresser un fichier avec Windows, il faut cliquer à droite dessus puis : envoyer vers / Dossier compressé. Vous enlevez tout ce qui n'est pas nécessaire (feuilles inexploitées, une partie des données si vous avez une liste, images, décos diverses...) et vous devriez atteindre la limite de 48,8 Ko (c'est faisable, beaucoup, voir très beaucoup, y arrivent :D )

Pour supprimer les lignes vides (en partant du principe que l'on peut se baser sur la colonne A) :
Code:
Private Sub CommandButton1_Click()
For i = Sheets(Feuil1).Range("A" & Application.Rows.Count).End(xlUp).Row To 2 Step -1
    If Cells(i, 1).Value = "" Then
        Cells(i, 1).EntireRow.Delete
    End If
Next i
End Sub

Code à mettre dans un bouton "boite à outil contrôle".
Cordialement
 

Benjy

XLDnaute Occasionnel
Re : Réalisation d'un devis

Ouaip c'est un truc comme sa que je cherche. Tu peux m'expliquer le code ?

Code:
Private Sub CommandButton1_Click()
For i = Sheets(Feuil1).Range("A" & Application.Rows.Count).End(xlUp).Row To 2 Step -1
    If Cells(i, 1).Value = "" Then
        Cells(i, 1).EntireRow.Delete
    End If
Next i
End Sub

C'est quoi le & Application.Rows.Count, end(xlup).row ?
Et pourquoi "to 2 step - 1 "

Merci
 

Benjy

XLDnaute Occasionnel
Re : Réalisation d'un devis

On va faire plus simple voilà un fichier exemple.

Pour le bouton pas de soucis dans mon fichier original je passe de ma feuille principal sur celle ci par un bouton donc il me suffira de rajouter le code dedans pour en même temps effectuer la manipulation.

Le fichier exemple contient juste une feuille exemple de devis. Remplis manuellement. Dans le fichier original les 4 premieres colonnes de chaque ligne sont automatiquement remplis.
Mais on abouti à quelque chose dans le genre.

Comment enlever les lignes vides ?
 

Pièces jointes

  • test.xls
    23 KB · Affichages: 109
  • test.xls
    23 KB · Affichages: 113
  • test.xls
    23 KB · Affichages: 110

Efgé

XLDnaute Barbatruc
Re : Réalisation d'un devis

Ouaip c'est un truc comme sa que je cherche. Tu peux m'expliquer le code ?

Ouaip
Code:
Private Sub CommandButton1_Click()
[COLOR=seagreen]'Pour i = Le numéro de la dernière ligne remplie de la colonne A [/COLOR]
[COLOR=seagreen]'jusqu'a la ligne 2 en remontant d'un à chaque pas[/COLOR]
For i = Sheets("Feuil1").Range("A" & Application.Rows.Count).End(xlUp).Row To 2 Step -1
  [COLOR=seagreen] 'Si la cellule en ligne i et colonne 1 est vide alors[/COLOR]
    If Cells(i, 1).Value = "" Then
        [COLOR=seagreen]'Supprimer la ligne de la cellule i 1[/COLOR]
        Cells(i, 1).EntireRow.Delete
   [COLOR=seagreen]'Fin de la condition[/COLOR]
    End If
[COLOR=seagreen]'Ligne suivante[/COLOR]
Next i
End Sub

On va faire plus simple voilà un fichier exemple.
C'est un peu ce que l'on demande depuis le début :confused:,

Dans le fichier original les 4 premieres colonnes de chaque ligne sont automatiquement remplis.

Si ces lignes sont remplies automatiquement pourquoi laisser des vides ?

Enfin, bref... Pour votre exemple il modifier la ligne For i = par:
Code:
For i = Sheets("Feuil1").Range("A" & Application.Rows.Count).End(xlUp).Row To [COLOR=red][B]14[/B][/COLOR] Step -1
Cordialement
 

Benjy

XLDnaute Occasionnel
Re : Réalisation d'un devis

Au début j'étais pas partis pour copier mes cellules dans la feuille de devis. Il doit y'avoir un moyen plus simple et moins "brouillon".

En fait sur ma feuille 1 je coche des cases pour les articles que je veux. Si la case est cocher il apparait à coté le prix, la référence etc. si elle est pas cocher il apparait rien.
Donc pour ma feuille de devis j'ai copier l'ensemble des cellules de ma feuille 1. Il y'a donc forcément des vides puisque toutes les cases ne sont jamais cocher en même temps...

J'obtiens une erreur 1004.
"La méthode delete de la classe range à échoué "
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Réalisation d'un devis

Re
Je pense que si vous mettez en ligne un véritable exemple du fichier tel que vous l'avez réalisé avec vos cases à cocher et votre fameuse Feuill1, (mais y a t il un fichier réalisé ?), je pense que quelqu'un pourra vous aidez.
En attendant, je passe la main à une âme charitable....
Cordialement
 

Benjy

XLDnaute Occasionnel
Re : Réalisation d'un devis

Ben désolé dans ce cas, j'arrive pas à atteindre la limite de taille du fichier.
Je veux bien enlever les listes qui sont dedans pour gagner de la place mais du coup le fichier n'a plus aucun interêt et ne fonctionne même plus.
D'ailleur même en supprimant 90% des liste je suis toujours au dessus de la limite. Je veux bien supprimer les 50 cases à cocher du fichiers mais dans ce cas autant mettre en ligne un fichier vierge...

Je vais fonctionner par images dans ce cas pour vous montrer le fichier tel qu'il est. Sa peut surement être plus efficace que mes explications.

Donc je reprends au tout début. J'ai pas mal de case à cocher pour sélectionner ou un article, avec de temps à autres des options à choisir etc.
Si la case est coché la ligne est remplie. Si elle ne l'est pas, comme vous pouvez le voir sur l'image la ligne reste vide.
Certaines cases sont grisé car indisponible avec des choix fait plus haut...

Ce que je souhaite faire c'est mettre dans un tableau ( comme mis pièce jointe quelques message plutôt ) les données essentielles des case qui sont cochés.

Je ne sais pas comment faire, donc je suis partis de manière totalement barbare en mettant :
ligne 14 colonne B feuille devis = Ligne 49 colonne D feuille chiffrage...
etc etc

Mais si je fais sa je me retrouve avec un tableau aussi long que je possède de case à cocher ( normal ) mais avec des blancs toutes les deux lignes. Donc si j'utilise cette méthode il me faut une astuce pour enlever les lignes vide.

Mais je suis ouvert à toute autre méthode susceptible de régler mon problème car je conçois bien que le copier/coller d'une page à l'autre est vraiment pas efficace.
 

Pièces jointes

  • image1.jpg
    image1.jpg
    50.5 KB · Affichages: 205
  • image1.jpg
    image1.jpg
    50.5 KB · Affichages: 240
  • image1.jpg
    image1.jpg
    50.5 KB · Affichages: 242

jeanpierre

Nous a quitté
Repose en paix
Re : Réalisation d'un devis

Bonjour Benjy, le fil,

Pourquoi des cases à cocher, une liste déroulante contenant tes références et pour les colonnes suivantes un simple RECHERCHEV, voire un INDEX/EQUIV pourra suffire et sera plus présentable.

Sinon, dépose ton fichier sur cijoint.fr et donne nous le lien.

Bon après-midi.

Jean-Pierre
 

Benjy

XLDnaute Occasionnel
Re : Réalisation d'un devis

Ah oui je ne connaissais pas ce site ! Merci beaucoup !

Voilà le lien : Cijoint.fr - Service gratuit de dépôt de fichiers

J'ai essayé de le faire en menu déroulant mais il y'a trop de conditions imbriquées pour mon petit niveau ^^.

L'utilisateur ne doit pas choisir la référence, il doit choisir l'accessoire et obtenir en "réponse" la référence ansi que le prix.

Dans une autre fichier j'ai utilisé l'emploi successif de 4 menu déroulant pour arriver à la donner de la chaudière ( les premières lignes )
D'ailleur la liste est toujours présente dans la feuille " liste "...

Je suis pas fermé à utiliser des menus déroulants car je maîtrise davantage que les cases à cocher et surtout sa allège grandement le fichier qui la est absolument horrible je trouve. Mais pour cela il faut me fournir une piste sur la manière de présenter et de procéder car je ne vois pas.

Sinon je demande un peu d'indulgence je suis vraiment débutant en Excel et j'ai la plupart du temps recours à certaines " feintes " visuel pour arriver à un rendu graphique que je trouve acceptable... La plupart du temps sa fonctionne bien mais sur des fichiers plus petits. La sa fait vraiment brouillon et barbare je le conçois ^^. Mais on m'a demandé de faire ce programme donc je m'y emploi avec le peu de connaissances dont je dispose.
 

Benjy

XLDnaute Occasionnel
Re : Réalisation d'un devis

Voilà un nouveau fichier. J'ai pas changer grand chose mais j'ai fais un cas complet !
Cijoint.fr - Service gratuit de dépôt de fichiers

A mon avis il faudrait " cacher " les lignes dont la colonne A est vide.
Car si je les supprime le devis suivant ne marchera pas. Or si les cache je peux ensuite les retrouver par exemple avec le bouton de mise à zéro du programme.

Quelqu'un sait il comment faire cela ?
Je pense à quelque chose du type :

pour i de 0 à "nb de lignes" ( nombre de ligne et non pas le numéro de ligne car sinon quand il va cacher il risque d'en sauter une sur deux )
IF cell(i;1)="" then "cacher ligne"
else ne rien faire
next i
end if

Cela peut il marcher ? Et surtout qu'elle est le code de "cacher ligne " ?

peut être comme ceci :
Code:
Sub test2()
'
' test2 Macro
' Macro enregistrée le 05/05/2010 par bwalter
'
For i = 14 To 48
If Cells(i, 1) = "" Then
Rows("i:i").Select
    Selection.EntireRow.Hidden = True
Else
End If
Next i

End Sub

Mais j'obtiens une erreur sur la ligne Rows("i:i").select
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Réalisation d'un devis

Re Benjy, Bonjour jeanpierre,
Deux solutions pour masquer les lignes :
Code:
Sub test()
For i = 14 To 48
    If Cells(i, 1) = "" Then
        Cells(i, 1).EntireRow.Hidden = True
    End If
Next i
End Sub

Ou

Code:
Sub test2()
For i = 14 To 48
    If Cells(i, 1) = "" Then
        Rows(i & ":" & i).EntireRow.Hidden = True
    End If
Next i
End Sub

Pour réafficher toutes les lignes :
Code:
Sub test3()
Cells.EntireRow.Hidden = False
End Sub
Cordialement
 

Discussions similaires

Réponses
2
Affichages
294
Réponses
3
Affichages
346

Statistiques des forums

Discussions
312 305
Messages
2 087 077
Membres
103 455
dernier inscrit
saramachado