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

Microsoft 365 Procédure trop grande

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
 

ton-v

XLDnaute Nouveau
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
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…