XL 2013 Macro : Qté * CU avec nombre variable de ligne

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

jerome91

XLDnaute Junior
Bonjour à tous,

Je suis depuis cet après-midi sur une macro dont l'objectif est de calculer le coût de différentes primes en fonction de différents services ou catégories.

Pour cela, la "procédure" est :
1) remplir l'onglet Catégorie colonne A avec les différents services (il y en a de renseigner mais il peut y en avoir plus)
2) dans l'onglet Primes, appuyer sur le bouton "bonhomme" (lien avec la macro1)
et cette dernière duplique les catégories dans 3 tableaux
3) ensuite il faut renseigner dans le tableau du haut, les quantités par type de prime et par catégorie
4) ensuite le coût unitaire pour ces dernières et idem par catégorie (tableau du milieu)
5) ensuite là où je bloque dans ma macro, c'est mettre une formule d'office (dans le tableau du bas) qui fasse la quantité * le CU, je souhaiterais que cette formule se mette directement à l'étape 2), et qu'elles se mettent jusqu'à la dernière catégorie (là il y en a 7 mais il peut y avoir bien plus).

Pourriez-vous m'aider sur le point 5) où je bloque ?

Je suis débutant, peut-être qu'il est aussi possible de modifier le début mais en tout cas ça fonctionne, mais il y a peut-être plus simple 🙂

De plus, comme vous le verrez j'ai rajouté un bouton "éclair" pour gagner du temps pour supprimer les lignes.

Merci.

Jérôme
 

Pièces jointes

Bonjour Jérôme

Pour commencer, il faut ajouter Application.CutCopyMode = 0 et Application.GoTo [A1] avant End sub.
Pour les primes, sans base de données de celles-ci (les quantités par type de prime et par catégorie), comment comptes-tu faire??
 
Bonjour,

L'objectif de ce fichier est de calculer des provisions de primes par catégorie. Quand la partie Quantité * CU fonctionnera je pourrais tester le fichier avec des valeurs "prises au hasard" avant utilisation au réel.

De plus, à quoi serve les 2 instructions que tu mindiques ?

En espérant avoir répondu à ton interrogation.

Jérôme
 
Re

La première sert à arrêter la sélection du tableau, l'autre enlève la sélection(en bleu). Remplace ta macro par celle-ci

VB:
Sub Macro1()
Dim X As Integer, I As Integer, Z As Integer, Y As Integer

Application.ScreenUpdating = False

X = Application.WorksheetFunction.CountA(Sheets("Catégorie").Range("A:A"))
Z = 13 + X
Y = 20 + X * 2

With Sheets("Primes")
For I = 1 To X
.Rows(6).Insert
Next I
For I = 1 To X
.Rows(Z).Insert
Next I
For I = 1 To X
.Rows(Y).Insert
Next I
End With

Sheets("Catégorie").Range("A1:A" & Range("A65000").End(xlUp).Row).Copy
With Sheets("Primes")
.Range("A5").PasteSpecial Paste:=xlPasteValues
.Range("A" & Z - 1).PasteSpecial Paste:=xlPasteValues
.Range("A" & Y - 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = 0
Application.GoTo .[A1]
End With
End Sub

ça j'ai compris. Mais comment veux-tu qu'on fasse pour calculer quantité * CU si il n'y a rien d'inscrit, on doit le deviner?? 🙄😵
 
Dernière édition:
J'ai fait la modification avec la macro indiquée.

Quand je lances la macro j'ai l'impression que ça supprime les libellés initiales.
Exemple : ce qu'il y a en ligne 9 et 16avant de lancer la macro disparaissent

J'ai rajouté un onglet avec des données "test" qu'il "suffit" de copier dans le tableau 1 et 2 pour vérifier, ces données seront ensuite renseignées à la main.

Merci.

Jérôme
 

Pièces jointes

Re

Désolé pour le quack, voici la macro corrigée.

VB:
Option Explicit

Sub Macro1()
Dim X As Long, I As Long, Z As Long, Y As Long, plage As Range


Application.ScreenUpdating = False

X = WorksheetFunction.CountA(Sheets("Catégorie").Range("A:A"))
Z = 13 + X
Y = 20 + X * 2

With Sheets("Primes")
For I = 1 To X
.Rows(6).Insert
Next I
For I = 1 To X
.Rows(Z).Insert
Next I
For I = 1 To X
.Rows(Y).Insert
Next I
End With

With Sheets("Catégorie")
Set plage = .Range("a1:a" & .Range("a" & Rows.Count).End(xlUp).Row)
plage.Copy
End With

With Sheets("Primes")
.Range("a5").PasteSpecial Paste:=xlPasteValues
.Range("a" & Z - 1).PasteSpecial Paste:=xlPasteValues
.Range("a" & Y - 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = 0
Application.GoTo .Range("a1")
End With

End Sub

J'ai mis Long, car il a une plus grande portée ( plus de 2 millions) par rapport a Integer. Voir ici Variables

Pour le reste, désolé, pour moi c'est un peu compliqué.
 
Dernière édition:
- 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

Discussions similaires

Réponses
4
Affichages
144
Réponses
32
Affichages
975
Réponses
29
Affichages
928
Réponses
4
Affichages
163
Réponses
66
Affichages
724
Retour