Code de sauvarde parfait mais... [Résolu]

Signaler
-
 grisan29 -
bonjour a vous tous
dans le fichier que voici http://cjoint.com/?CDmnxSnq09R j'ai un souci avec le code de nouvelle feuille qui m'efface trop de lignes (2 lignes en bas)
et aussi avec l'aperçu qui ne mets pas les lignes voulues en saut de pages
je m'explique
au saut de page les lignes 18 et 19 devraient se trouver copiés a chaque début de changement page et dans le meme temps faire une bordure finalisant chaque feuille juste avant l'entête du bas qui sera inscrite sur 2 lignes via la mise en page
j'ai bien dit devraient se trouver copié car avec windows7 et office 2010 c'est bien sauf la bordure, mais sous windows8 et office 2010 ce n'est plus la même chose
je vous ai joint le fichier qui est aussi parlant que moi

cordialement

Pascal

13 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Bonjour,
moi qui ne connais vba que depuis 1 an environ

Ben ça, alors !
Je suis très loin d'être un génie, avais déjà plus de 68 ans lorsque je me suis mis (sans intérêt personnel, pourtant... juste pour pouvoir répondre valablement sur ce forum) à apprendre ce VBA ...
Ce "code similaire" est basique de chez basique et ne fait, ni de près ni de loin, appel à d'autres connaissances en développement (VB6) que j'avais par ailleurs (il est TOTALEMENT et uniquement VBA/EXCEL) . J'étais déjà à un niveau bien plus élevé moins de deux mois après le début de mon apprentissage en autodidacte total.
Et je confirme que, dans le cas présent, l'utilisation du seul enregistreur de macro (lancer l'enregistreur, agir manuellement, arrêter l'enregistreur et ??? lire le code généré !) suffit à obtenir l'essentiel du code montré !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
rebonjour

j'ai oublier les balises pour le fichier
http://cjoint.com/?CDmnxSnq09R</code>

voila réparer

Pascal
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
Bonjour,

De base, on ouvre pas les fichiers joints (ne provenant pas d'une source sûre).

Sur ce, je t'invite plutôt à mettre ici les lignes de codes incriminés et à expliquer le problème en détail.

Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Bonjour, grisan29,
1) Tu as ouvert cette discussion dans la section :
Forum > Visual Basic 6
alors que, concernant une difficulté VBA/Excel, elle aurait dû l'être dans la section Langages dérivés > VBA
Pour te convaincre de l'absolue nécessité d'être très rigoureux dans le choix de la section, je vais tout simplement me référer à ton intervention récente dans cette discussion : Tapez le texte de l'url ici.
Il se trouve que le demandeur est sous VB.Net et que ta réponse, en VBA, est totalement inadaptée !
Convaincu ? Je l'espère et espère que tu sauras dorénavant veiller à choisir avec plus de soin la section dans laquelle tu ouvres tes discussions.
2) la remarque faite par Nhenry, que je salue, en ce qui concerne les liens vers des classeurs à télécharger est on ne peut plus fondée !
Outre les "contagions" toujours possibles, le fichier que tu as déposé à ce lien est voué à disparaître un jour. Comment penses-tu alors qu'un futur membre, entrant dans cette discussion, puisse avoir une chance de savoir de quoi il pouvait bien s'agir . Ce serait totalement contraire à l'esprit fondamental du forum, qui est : trouver une solution sur la base de tenants et aboutissants parfaitement cernés ! *
Je ne connais personnellement aucun problème qui, clair dans un esprit, ne saurait être exposé avec clarté, concision, exactitude et de manière technique.
A toi de montrer, par un tel exposé, que les choses sont très claires.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
bonjour a vous tous
déposant pour la 1ere fois un fichier je me suis perdu dans la liste deroulante et n'ayant su que choisir j'ai pris ce que je pensait etre bien
avec mes excuses si je n'ai pas fait comme il faut, mais comment dois je joindre un fichier alors

cordialement

Pascal
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
mais comment dois je joindre un fichier alors

Tu n'as pas compris ?
On recommence donc : on ne joint pas un fichier ! On sait exposer techniquement, clairement et complètement les tenants et aboutissants de la difficultés rencontrée et montrer le bout de code (au besoin commenté) tenté pour la résoudre !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
bonsoir a vous tous
donc comme je ne comprends rien , je vais faire comme ucfoutu préconise, mais depuis j'ai fait évoluer mon fichier
donc dans le code qui suit(si je le place bien?)
Sub ChangementPage(NoLigne As Long)
With Sheets("facturation")
    [Modèle!A1:P13].Copy
    .Cells(NoLigne, 1).Insert Shift:=xlDown
    .HPageBreaks.Add before:=.Cells(NoLigne, 1)
    .Cells(NoLigne + 8, "L").FormulaR1C1 = "=R[-11]C"
    .Cells(NoLigne + 8, "O").FormulaR1C1 = "=R[-11]C"
    .Cells(NoLigne + 8, "P").FormulaR1C1 = "=R[-11]C"
        .Cells(NoLigne + 11, "L").FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)"
    .Cells(NoLigne + 11, "O").FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)"
    .Cells(NoLigne + 11, "P").FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)"
    .Range(.Cells(NoLigne + 8, "C"), .Cells(NoLigne + 8, "I")).Font.Size = 16
    .Range(.Cells(NoLigne + 8, "C"), .Cells(NoLigne + 8, "I")).Font.Bold = True
    .Cells(NoLigne + 8, "C").HorizontalAlignment = xlRight
    .Cells(NoLigne + 8, "I").HorizontalAlignment = xlLeft
    
End With
End Sub

de code fonctionne très bien, mais ne mets pas de bordures sous("CàM et OàP")lors de copie de cette partie
.Cells(NoLigne + 7, "C") = .[C17]
    .Cells(NoLigne + 7, "I") = .[I17]

ce code est activer par le bouton ajout d'articles sur la feuille, ce bouton a pour code
Private Sub CommandButton2_Click()
Dim lig As Integer, CtrMt As Double, CtrTVA7 As Double, CtrTVA19 As Double
 
With Sheets("facturation")
    lig = .Range("B65536").End(xlUp).Row
If (lig - 56) Mod 80 = 0 Then
    ChangementPage lig + 4
    lig = lig + 14
ElseIf [B19] = "" Then
   lig = 19
Else
   lig = .Range("B65536").End(xlUp)(2).Row
End If
.Rows(lig + 1).Insert

'<.Cells(lig, "C").Borders(xlEdgeLeft).LineStyle xlContinuous
.Range(.Cells(lig, "I"), .Cells(lig, "P")).Borders(xlEdgeLeft).LineStyle = xlContinuous
.Range(.Cells(lig, "C"), .Cells(lig, "M")).Borders(xlEdgeTop).LineStyle = xlNone
.Range(.Cells(lig, "O"), .Cells(lig, "P")).Borders(xlEdgeTop).LineStyle = xlNone
.Range(.Cells(lig, "C"), .Cells(lig, "M")).Borders(xlEdgeBottom).LineStyle = xlContinuous
.Range(.Cells(lig, "O"), .Cells(lig, "P")).Borders(xlEdgeBottom).LineStyle = xlContinuous
.Range(.Cells(lig, "D"), .Cells(lig, "H")).Borders(xlInsideVertical).LineStyle = xlNone
.Range(.Cells(lig, "I"), .Cells(lig, "Q")).Borders(xlInsideVertical).LineStyle = xlContinuous
.Range(.Cells(lig, "O"), .Cells(lig, "P")).VerticalAlignment = xlCenter
.Range(.Cells(lig, "I"), .Cells(lig, "M")).VerticalAlignment = xlCenter
.Range("c19:M19,O19:P19").Borders(xlEdgeTop).LineStyle = xlContinuous

'<=================================================================================================
DoEvents '***AOT
.Range("B" & lig).Value = Txtnumero.Value
.Range("K" & lig).Value = Txt_vente.Value

.Range("M" & lig).NumberFormat = "###0"
If Me.OptionButton1 = True Then
    .Range("M" & lig).Value = 1
Else
    .Range("M" & lig).Value = 2
End If
    '.Range("M" & lig).Value = Abs(Me.OptionButton2.Value) + 1
.Range(.Cells(lig, "B"), .Cells(lig, "P")).HorizontalAlignment = xlCenter
.Cells(lig, "C").HorizontalAlignment = xlLeft
.Range(.Cells(lig, "B"), .Cells(lig, "P")).Font.Name = "Arial"
.Range(.Cells(lig, "C"), .Cells(lig, "P")).Font.Size = 12
.Cells(lig, "B").Font.Size = 9
.Cells(lig, "O").FormulaR1C1 = "=IF(RC[-2]=1,RC[-6]*RC[-4]*0.07,"""")"
.Cells(lig, "P").FormulaR1C1 = "=IF(RC[-3]=2,RC[-7]*RC[-5]*0.196,"""")"
.Cells(lig, "B") = Me.Txtnumero
.Cells(lig, "C") = Me.txtArticle
.Cells(lig, "I") = Me.txtPU
.Cells(lig, "J") = Me.txtUnité
.Cells(lig, "K") = Me.Txt_vente
If IsNumeric(.Cells(lig, "I")) And IsNumeric(.Cells(lig, "K")) Then
    .Cells(lig, "L") = CDbl(.Cells(lig, "I")) * CDbl(.Cells(lig, "K"))
Else
    .Cells(lig, "O") = ""
    .Cells(lig, "P") = ""
End If
'.Range("B19:M" & lig + 1).Sort Key1:=.Range("B19"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
For i = lig To 1 Step -1
    If .Cells(i, "K") <> "REPORT" And .Cells(i, "K") <> "Quantité" Then
        If IsNumeric(.Cells(i, "L")) Then CtrMt = CtrMt + .Cells(i, "L")
        If IsNumeric(.Cells(i, "O")) Then CtrTVA7 = CtrTVA7 + .Cells(i, "O")
        If IsNumeric(.Cells(i, "P")) Then CtrTVA19 = CtrTVA19 + .Cells(i, "P")
    Else
        If IsNumeric(.Cells(i, "L")) Then CtrMt = CtrMt + .Cells(i, "L")
        If IsNumeric(.Cells(i, "O")) Then CtrTVA7 = CtrTVA7 + .Cells(i, "O")
        If IsNumeric(.Cells(i, "P")) Then CtrTVA19 = CtrTVA19 + .Cells(i, "P")
        Exit For
    End If
Next i
    .Cells(lig + 1, "L") = CtrMt
    .Cells(lig + 1, "O") = CtrTVA7
    .Cells(lig + 1, "P") = CtrTVA19
'Txtnumero.Value = ""
'txtArticle.Value = ""
'txtPU.Value = ""
'Txt_vente.Value = ""
'Txt_qté_stock_article.Value = ""
'Txtrestant.Value = ""
'txtUnité.Value = ""
    
    End With

    
End Sub

qui permet le saut de page par la détection du nombre de ligne inscrite par cette partie
If (lig - 56) Mod 80 = 0 Then
    ChangementPage lig + 4
    lig = lig + 14


voila ce qu'il arrive a ce fichier qui n'est pas le même que j'ai voulu joindre auparavant

cordialement

Pascal
BONJOUR A VOUS TOUS

est ce que c'est parce que c'est parce que je vous ai envoyer un fichier dans le 1er post que maintenant il n'y a pas de réponse quand j'ai mis le code?

cordialement

Pascal
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Bonjour,

Non, c'est juste que probablement personne, comme moi, ne voit l'erreur.
En principe, les bordures devraient bien se dessiner...

Par contre, je ne comprends pas pourquoi tu tries après avoir inscrit les formules, les valeurs et les bordures

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
bonjour Mpi
merci pour ton message


je ne comprends pas pourquoi tu tries après avoir inscrit les formules, les valeurs et les bordures

c'est un fichier que j'ai trouvé tel que et que j'essai de faire un fichier de devis/facturation avec
mais justement je ne comprends pas trop comment cela fonctionne n'étant pas un pro de vba
je suis sur windows8 avec office 2010 si cela importe

pascal
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
En te servant de l'enregistreur de macro tu auras le code de tout ce que tu exécutes.
Il ne reste qu'à y faire un peu de ménage, enlever les scroll, modifier les Select/Selection,...

C'est souvent plus simple que de refaire un code qui servait à autre chose et dont on ne comprend pas nécessairement tout...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
bonjour Mpi

merci de me réponse mais comment veux tu que je ponde un code similaire avec l'enregistreur de macros, moi qui ne connais vba que depuis 1 an environ, c'est pour cela que je fait des recherches sur le net

Pascal
bonjour a tous

bon étant trop novice pour ce genre d'expédition, je clos le sujet

Pascal