Macro inserer ligne + saut de page

  • Initiateur de la discussion Initiateur de la discussion VANNES56
  • 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 !

V

VANNES56

Guest
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

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... 😀 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 😛), 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 😎
 
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
 
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 😎
 
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
 
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 😎
 
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
 
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
 
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 +
 
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
 
Re : Macro inserer ligne + saut de page

Re 🙂,
Le Select n'est pas obligatoire et va ralentir l'exécution
Code:
x = 11
While Cells(x + 1, 2) <> ""
x = x + 1
Wend
A vérifier si c'est x + 1 ou x dans Cells.
A + 😎
 
Re : Macro inserer ligne + saut de page

Merci de la rapidité de ta réponse, mais je ne comprens le code : s'agit il
d'un bout de code à intégrer dans la macro , et je supprime quoi pour select.

Meci
 
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 + 😎
 
- 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

Réponses
3
Affichages
878
J
Réponses
0
Affichages
903
JFmdo
J
S
Réponses
6
Affichages
2 K
SPELTIER
S
Réponses
10
Affichages
1 K
Réponses
5
Affichages
869
H
  • Question Question
Réponses
3
Affichages
1 K
Harlem_2021
H
Retour