Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Procédure trop grande

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

ton-v

XLDnaute Nouveau
Bonjour tout le monde,

ce forum m'a beaucoup aidé et appris dans Excel et aujourd'hui je me suis inscrit car j'ai un problème de procédure trop grande et que j'aurai besoin des lumières du forum pour m'aider à corriger mon problème.

voici la problématique :

Pour ma boite, j'ai créer un userform pour la saisie du budget.

L'année fiscale chez nous commence en février donc février = le mois 1

On saisie le montant globale pour 6 catégorie et la macro dans le userform alimente une base de donnée et crée la saisonnalité pour les 12 mois qui viennent.


Mon userform créé 24 ligne de base * 6 catégorie * 12 mois en tout j'ai 1728 ligne dans mon code VBA. Ces lignes j'ai pu les créer avec des formules de texte sur Excel lorsque j'ai collé j'ai eu le problème de procédure trop grande.

mon problème c'est vraiment la procédure d'upload

Voici le code VBA :

Private Sub BTajout_Click()


''''''''''''''''''''''''''''''' Controle de doublon '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Dim rngCust As Range

Dim Concat As String

Concat = CBlisteCP.Value & " F2 CA Ordonnance"


Set rngCust = Feuil2.Range("P😛").Find(Concat)

If rngCust Is Nothing Then

GoTo suite

Else
MsgBox "le chiffres d'affaires pour la Pharmacie existe dejà"
Exit Sub

End If


suite:


'''''''''''''''''''''''''''''''programme lors de la validation des donnees''''''''''''''''''''''''''''''''''''''''''''''

Dim ligne As Integer
Application.ScreenUpdating = False
If MsgBox("confirmez-vous l'ajout des donnees?", vbYesNo, "confirmation") = vbYes Then

'''''''''''''''''''''''''''''''''''''''''''''''''''''debut Programme d'upload'''''''''''''''''''''''''''''''''''''''''''''''''''


lignefévr = catégorie 1
ligne févr +1 =catégorie 2
ligne févr +2 = catégorie 3
ligne févr +3 = catégorie 4
ligne févr +4 = catégorie 5
ligne févr +5 = catégorie 6

la même chose pour janvier jusqu'à décembre


Feuil2.Select
lignefévr = Feuil2.Range("A456541").End(xlUp).Row + 1
'''''''''''''''''''''''''''''''''CAT 1015 février'''''''''''''''''''''''''''''''''''''''''''''''''''''
Cells(lignefévr, 1).Formula = "=RC[2] & "" "" & RC[5] & "" "" & RC[13] & "" "" & RC[6] & "" "" & RC[8] & "" "" & RC[10]" 'Concatenation de Type rubrique AREA centre de profit nom , moi et montant
Cells(lignefévr, 2) = "0080200000 " 'N° compte Valeur manuel
Cells(lignefévr, 3) = "BU" 'TYPE source : Manuel
Cells(lignefévr, 5) = "1015" 'Catégorie source : Manuel
Cells(lignefévr, 6) = "CA Ordonnance " 'Rubrique
Cells(lignefévr, 7) = CBlisteCP.Value 'centre de profit nom
Cells(lignefévr, 8).Formula = "=INDEX(PlageCP,MATCH(RC[-1],ListeCP,0),3) " 'Centre de profit Numéro rechercheV sur la ligne 7
Cells(lignefévr, 4).Formula = "=RC[4]& ""0100"" " 'ligne 8 et 0100
Cells(lignefévr, 9) = 1 'manuel
Cells(lignefévr, 10) = 2020 'Année manuel
Cells(lignefévr, 11) = TBBudget1015.Value * Feuil11.Range("C4").Value ' Montant * saisonalité du mois en cours
Cells(lignefévr, 12) = CButilisateur.Value ' Nom d'utilisateur
Cells(lignefévr, 13).Formula = "=INDEX(PlageCP,MATCH(RC[-6],ListeCP,0),1) " ' Recherche V sur cnom
Cells(lignefévr, 15).Formula = "=INDEX(PlageCP,MATCH(RC[-8],ListeCP,0),4) " ' Recherche V sur cnom
Cells(lignefévr, 16).Formula = "=RC[-9] & "" "" &RC[-13] & "" "" &RC[-10] " ' concat CP,TYPE,type ca
With Feuil2.Range("P " & lignefévr)'Je transforme la ligne en valeur pour que la macro puisse faire un contrôle de doublon
.Value = .Value
End With
With Feuil2.Range("A " & lignefévr) 'Je transforme la ligne en valeur pour que la macro puisse faire un contrôle de doublon
.Value = .Value
End With


et je termine mon bouton par


'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIfin application unload formulaire de saisieIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

'Unload FRMSaisie
TBattendu.Value = ""
TBattendu20.Value = ""
TBattendu40.Value = ""
TBattendu60.Value = ""
TBattenduAUTRES.Value = ""
TBattendu12.Value = ""


Worksheets("bdd").ListObjects("tableau7").Unlist

Feuil2.ListObjects.Add(xlSrcRange, Range("$A$1:$P$" & LigneJanvier + 5), , xlYes).Name = _
"Tableau7"


MsgBox "ligne creer avec succès"

Sheets("TCD").Select
ActiveWorkbook.Connections("Requête - PlageBDD").Refresh
Feuil14.PivotTables("Tableau croise dynamique3").PivotCache.Refresh
Sheets("Menu").Select

Application.ScreenUpdating = True


End If

End If


End Sub


pour la saisonnalité c'est le montant de la catégorie * une cellule dans Excel, voici les cellules : de C4:N9

Exemple pour lignefévr pour la cat1 on va utiliser la cellule C4





Est-ce qu'il y a un moyen de créer une boucle, ce qui dépasse mes connaissances pour cette complexité ou bien je dois couper le module ?


Je vous remercie d'avance pour votre aide

Bonne journée à tous
 
c'est bon j'ai trouvé voici la solution :


Application.ScreenUpdating = False
If MsgBox("confirmez-vous l'ajout des donnees?", vbYesNo, "confirmation") = vbYes Then

'''''''''''''''''''''''''''''''''''''''''''''''''''''debut Programme d'upload'''''''''''''''''''''''''''''''''''''''''''''''''''
Dim ligne As Integer

ligne = Feuil2.Range("A456541").End(xlUp).Row + 1

For cat = 1 To 6

For numero = 1 To 12


Feuil2.Select

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Cat 1015 février'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Cells(ligne, 1).Formula = "=RC[2] & "" "" & RC[5] & "" "" & RC[13] & "" "" & RC[6] & "" "" & RC[8] & "" "" & RC[10]" 'Concatenation de Type rubrique AREA centre de profit nom , moi et montant
Cells(ligne, 2) = "0080200000 " 'N° compte Valeur manuel
Cells(ligne, 3) = "BU" 'TYPE source : Manuel
Cells(ligne, 5) = Controls("LBcat" & cat).Caption
Cells(ligne, 6) = "CA Ordonnance " 'Rubrique
Cells(ligne, 7) = CBlisteCP.Value 'centre de profit nom
Cells(ligne, 8).Formula = "=INDEX(PlageCP,MATCH(RC[-1],ListeCP,0),3) " 'Centre de profit Numéro rechercheV sur la ligne 7
Cells(ligne, 4).Formula = "=RC[4]& ""0100"" " 'ligne 8 et 0100
Cells(ligne, 9) = numero
Cells(ligne, 10) = 2020 'Année manuel
Cells(ligne, 11) = Controls("TBBudget" & cat).Value * Feuil11.Cells(3 + cat, 2 + numero).Value ' Montant * saisonalité du mois en cours
Cells(ligne, 12) = CButilisateur.Value ' Nom d'utilisateur
Cells(ligne, 13).Formula = "=INDEX(PlageCP,MATCH(RC[-6],ListeCP,0),1) " ' Recherche V sur cnom
Cells(ligne, 15).Formula = "=INDEX(PlageCP,MATCH(RC[-8],ListeCP,0),4) " ' Recherche V sur cnom
Cells(ligne, 16).Formula = "=RC[-9] & "" "" &RC[-13] & "" "" &RC[-10] " ' concat CP,TYPE,type ca
With Feuil2.Range("P" & ligne)
.Value = .Value
End With
With Feuil2.Range("A" & ligne)
.Value = .Value
End With

ligne = ligne + 1

Next numero

Next cat
 
- 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
400
Réponses
3
Affichages
442
Réponses
2
Affichages
410
Réponses
9
Affichages
833
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…