Macro inserer ligne + saut de page

VANNES56

XLDnaute Nouveau
Bonjour à toutes et tous,

Malgré mes recherches et mes tentatives d'adapter des macros je n'arrive à rien, et le sous total d'Excel ne me convient pas.

J'ai un tableau de suivi des ventes classé par vendeur, et je souhaite à chaque changement de vendeur : insérer une ligne en intégrant des formules de calcul sur cette ligne + un saut de page.
Enfin tout annuler avant de choisir une autre équipe de vendeurs car une liste déroulante permet de choisir le secteur qui est de taille différente à chaque fois et vendeurs différents.( 17 secteurs et 120 vendeurs au total)

Ci joint extrait du fichier pour mieux comprendre.

Merci de votre aide et de vos pistes de recherche.

Salut, Thierry
 

Pièces jointes

  • TABLEAU VENDEURS.zip
    18.8 KB · Affichages: 103

JNP

XLDnaute Barbatruc
Re : Macro inserer ligne + saut de page

Bonjour Vannes56 :),
Pour insérer les lignes avec les totaux :
Code:
Sub Insertion()
Dim I As Integer, J As Integer
I = 10
J = 11
While Cells(J - 1, 3) <> ""
If Cells(J - 1, 3) <> Cells(J, 3) Then
    Rows(J & ":" & J).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Cells(J, 5) = "=sum(E" & I & ":E" & J - 1 & ")"
    Cells(J, 8) = "=sum(H" & I & ":H" & J - 1 & ")"
    Cells(J, 9) = "=sum(I" & I & ":I" & J - 1 & ")"
    I = J + 1
    J = J + 1
End If
J = J + 1
Wend
End Sub
à adapter en fonction de ton tableau réel.
Pour les sauts de page, je ne les utilise pas, donc pas évident de l'adapter à ton besoin. Le code VBA est
Code:
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
Par contre, il ne va pas falloir oublier d'insérer la ligne de définition, ou de la faire répéter par le format d'impression.
Pour revenir à la version de base, le plus simple est de ne pas l'enregistrer... :D Sinon, pour les totaux, une boucle vérifiant l'absence de vendeur avec une valeur dans un total va permettre de supprimer la ligne (et les vendeurs sans chiffre, mais de toute façon, c'est ce qui leur arrivera tôt ou tard :p), mais comme il n'y a pas les sauts de page, je préfère ne pas te l'écrire tout de suite...
Bon courage :cool:
 

VANNES56

XLDnaute Nouveau
Re : Macro inserer ligne + saut de page

Bonjour JNP,

j'ai adapté la macro à mon tableau,et ça fonctionne nickel, et donc merci de ton aide.

par contre pour la mise en forme du tableau je bute toujours sur un problème: aprés chaque ligne créée par la macro pour effectuer la somme des colonnes sélctionnées, je souhaite insérer une nouvelle ligne vide à la suite? avant de passer au vendeur suivant et ainsi de suite jusque la fin du tableau.
Je n'arrive pas à modifier correctement ta macro, merci de voir si tu peux me dépanner.

Par ailleurs, pour le pourcentage de marge, ce n'est pas la somme des pourcentages qui est mon but mais : somme des ventes / somme des marges
pour arriver à un pourcentage global. Je ne sais pas coder une division en macro.
Merci à nouveau,

Thierry
 

JNP

XLDnaute Barbatruc
Re : Macro inserer ligne + saut de page

Re :),
Code:
Sub Insertion()
Dim I As Integer, J As Integer
I = 10
J = 11
While Cells(J - 1, 3) <> ""
If Cells(J - 1, 3) <> Cells(J, 3) Then
    Rows(J & ":" & J).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Rows(J + 1 & ":" & J + 1).Insert Shift:=xlDown
    Cells(J, 5) = "=sum(E" & I & ":E" & J - 1 & ")"
    Cells(J, 8) = "=sum(H" & I & ":H" & J - 1 & ")"
    Cells(J, 9) = "=H" & J & "/E" & J
    I = J + 1
    J = J + 2
End If
J = J + 1
Wend
End Sub
devrait convenir.
Bonne journée :cool:
 

VANNES56

XLDnaute Nouveau
Re : Macro inserer ligne + saut de page

Merci JNP tout fonctionne, par contre j'ai réussi plus par intuition que par compréhension de la macro, si tu avais quelques explications sur les codes
car je cherche par exemple à écrire la commande suivante
(somme de la colonne M + somme de la colonne N - somme de la colonne O) /
somme de la colonne H, à intégrer à la suite des calculs déjà présents dans la macro.

Merci et bonne soirée
 

JNP

XLDnaute Barbatruc
Re : Macro inserer ligne + saut de page

Re :),
"=sum(E" & I & ":E" & J - 1 & ")" va remplir ta cellule avec ce qu'on appelle une concaténation. Ce qui est entre "" va être pris direct en texte, les variable vont être remplacer par leur valeur. Donc si I = 10 et J = 20, "=sum(E" & I & ":E" & J - 1 & ")" va être remplacé par "=sum(E10:E19)", ce qui va se transformer en français par =SOMME(E10:E19). Il est possible de passer par le français avec Cells(J, 5).FormulaLocal = "=somme(E" & I & ":E" & J - 1 & ")", mais j'évite car pour quelqu'un qui est dans une version étrangère, ça ne fonctionnera plus.
De même "=H" & J & "/E" & J va donner "=H20/E20".
Bon courage :cool:
 

VANNES56

XLDnaute Nouveau
Re : Macro inserer ligne + saut de page

Merci pour ces explications, mais je n'arrive pas à appliquer pour
(somme colonne M + somme colonne N - somme colonne O) / somme colonne H
j'ai des erreurs comme fin d'instruction demandée, je dois mal positionné les " ou les parenthèses

Merci
 

VANNES56

XLDnaute Nouveau
Re : Macro inserer ligne + saut de page

Merci de ce code,
Hélas je ny arrive pas, je n'ai pas de somme intermédiaire dans les colonnes M N et O, ce qui fait que le code donne évidemment 0 comme résultat.

J'ai placé sum à différents endroits de ton code, sans succés, je ne suis pas encore assez autonome pout y arriver seul

Merci
 

JNP

XLDnaute Barbatruc
Re : Macro inserer ligne + saut de page

Re :),
Rajoutes les calculs intermédiaires avec
Code:
Cells(J, [COLOR=red]5[/COLOR]) = "=sum([COLOR=red]E[/COLOR]" & I & ":[COLOR=red]E[/COLOR]" & J - 1 & ")"
le 5 correspond à E, donc pour M, ça va donner 13 M M.
Et si tu ne veux pas qu'ils apparaissent, tu rajoutes
Code:
Cells(J, [COLOR=red]5[/COLOR]).Font.ColorIndex = 2
A +
 

VANNES56

XLDnaute Nouveau
Re : Macro inserer ligne + saut de page

Bonjour JNP, c'est tout à fait ça.

Merci à JNP et aux idées diverses que j'ai trouvé sur le forum, je progresse beaucoup en VBA grâce à vous tous.
A moi de continuer pour finaliser mes tableaux et en particulier définir une zone d'impression variable avec des lignes vides (!), comme JNp tu connais le tableau merci de me dire ce que tu penses de cette macro, qui stoppe à la 1 ère ligne vide, merci et bonne journée
x = 11
Range("B12").Select
While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
x = x + 1
Wend
zone = "B12:Y" & x & ""
Range(zone).Select
ActiveSheet.PageSetup.PrintArea = zone
 

JNP

XLDnaute Barbatruc
Re : Macro inserer ligne + saut de page

Re :),
Mon code remplace
Code:
x = 11
Range("B12").Select
While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
x = x + 1
Wend
Je ne sélectionne pas de cellules, je me contente de regarder si elles sont vides, et j'incrémente.
A + :cool:
 

Discussions similaires

Statistiques des forums

Discussions
312 490
Messages
2 088 883
Membres
103 981
dernier inscrit
vinsalcatraz