Bonjour à tous,
Débutante sur ce forum et en VBA, je dois créer un fichier Excel qui utilise plusieurs macros et userforms.
Là je me trouve face à un mur, j'essaie de tourner la questions dans plusieurs sens mais impossible pour moi de résoudre. Voici mon problème :
J'ai une macro qui permet d'effectuer toute une série de choses dans mon fichier (calculs, classements etc...) et un userform qui ensuite est sensé afficher les résultats selon l'entreprise choisie.
J'aimerais qu'après avoir cliqué sur le bouton "résultats", la macro se lance puis avoir le Userform qui s'affiche directement ensuite. Mais je n'y arrive pas...
Si ça se trouve c'est un petit truc tout bête mais je n'arrive pas à trouver la solution.
Merci à tous d'avance pour votre aide !
Voici mon fichier "macro" :
Sub AppelCriteresForm()
'
' Ouverture du formulaire Période
'
Periode.Show Modal
'
End Sub
Sub AppelOffresForm()
'
' Ouverture du formulaire Reponse
'
Decision.Show Modal
'
End Sub
Sub CalculResultats()
'
' Dépouillement des Réponses enregistrées
'
'============= Initialisations
Dim rang As Integer
Dim NbEntreprises As Integer
Dim k As Integer
Dim l As Integer
Dim NbLignes As Integer
Dim NbColonnes As Integer
Dim NbPeriodes As Integer
Dim NoPeriodeTable As Integer
Dim RangTable As Integer
'============= Recopie de REPONSES dans TABDECISIONS
Sheets("REPONSES").Select
Sheets("REPONSES").Range("A1:G65000").Select
Selection.Copy
Sheets("TABDECISIONS").Select
Sheets("TABDECISIONS").Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
'============= On revient sur la feuille TABDECISIONS
Sheets("TABDECISIONS").Select
Range("A1").Select
'============= Calcul du nombre de lignes et de colonnes non vides sur la feuille TABDECISIONS
NbLignes = Cells.Find("*", , , , xlByRows, xlPrevious).Row
NbColonnes = Cells.Find("*", , , , xlByColumns, xlPrevious).Column
'============= Tri du Tableau des décisions sur Période et Prix de vente
Sheets("TABDECISIONS").[A1].Sort _
Key1:=Sheets("TABDECISIONS").[C2], Order1:=xlAscending, _
Key2:=Sheets("TABDECISIONS").[F2], Order2:=xlAscending, Header:=xlGuess
'============= Calcul du Rang
NbEntreprises = 0
For i = 2 To NbLignes
'========== Nouvelle Période
If Range("A1").Cells(i, 3).Value <> Range("A1").Cells(i - 1, 3).Value Then rang = 0
'========== +1 dans le rang
rang = rang + 1
'========== Affectation rang si prix différent du prix suivant
If Range("A1").Cells(i, 6) <> Range("A1").Cells(i + 1, 6) Then Range("A1").Cells(i, 7) = rang
'========== mémorisation nb Entreprises
If Range("A1").Cells(i, 2) > NbEntreprises Then NbEntreprises = Range("A1").Cells(i, 2)
'========== mémorisation dernière période
If Range("A1").Cells(i, 3) > NbPeriodes Then NbPeriodes = Range("A1").Cells(i, 3)
Next i
'========== Affectation du rang à zéro par le rang précédent
For i = NbLignes To 2 Step -1
If Range("A1").Cells(i, 7).Value = "0" Then
Range("A1").Cells(i, 7).Value = Range("A1").Cells(i + 1, 7)
End If
Next i
'============= Tri du Tableau sur NoEntrepise et Periode
Sheets("TABDECISIONS").[A1].Sort _
Key1:=Sheets("TABDECISIONS").[B2], Order1:=xlAscending, _
Key2:=Sheets("TABDECISIONS").[C2], Order2:=xlAscending, Header:=xlGuess
'============= Mise en forme Tabelau RESULRANGPV
'============= Recopie du Modèle de Tableau des Rangs de Modeles dans TABDECISIONS
Sheets("Modeles").Select
Sheets("Modeles").Range("A1:B2").Select
Selection.Copy
Sheets("FRANGSPV").Select
Sheets("FRANGSPV").Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("FRANGSPV").Select
For j = 2 To NbPeriodes + 1
Sheets("FRANGSPV").Range("A1").Cells(1, 2).Select
Selection.Copy
Sheets("FRANGSPV").Range("A1").Cells(1, j).Select
ActiveSheet.Paste
Sheets("FRANGSPV").Range("A1").Cells(1, j).Value = j - 1
Sheets("FRANGSPV").Range("A1").Cells(2, 2).Select
Selection.Copy
Sheets("FRANGSPV").Range("A1").Cells(2, j).Select
ActiveSheet.Paste
Next j
Sheets("FRANGSPV").Range("A2:GG2").Select
Selection.Copy
For i = 1 To NbEntreprises - 1
Sheets("FRANGSPV").Range("A2").Cells(i + 1, 1).Select
ActiveSheet.Paste
Next i
'========= Alimentation titre Tableau des Rangs
Sheets("FRANGSPV").Range("A1").Value = "Entreprise/Période"
Application.CutCopyMode = False
Sheets("FRANGSPV").Range("A2").Select
'============= Calcul du Tableau RESULRANGPV()
For i = 2 To NbLignes
If Sheets("TABDECISIONS").Range("A1").Cells(i, 4).Value <> Sheets("TABDECISIONS").Range("A1").Cells(i - 1, 4).Value Then
'====== Mémorisation no Entreprise
k = Sheets("TABDECISIONS").Range("A1").Cells(i, 2).Value
Sheets("FRANGSPV").Range("A2").Cells(k, 1).Value = Sheets("TABDECISIONS").Range("A1").Cells(i, 4).Value
End If
'======= Mémorisation de la période traitée i
l = Sheets("TABDECISIONS").Range("A1").Cells(i, 3).Value
'======= Alimentation du rang dans tableau
Sheets("FRANGSPV").Range("A2").Cells(k, l + 1).Value = Sheets("TABDECISIONS").Range("A1").Cells(i, 7).Value
'----------- couleur de fond cellule
Sheets("FRANGSPV").Range("A2").Cells(k, l + 1).Interior.ColorIndex = 40
Next i
'============= Tri du Tableau TABDECISIONS sur No de ligne
Sheets("TABDECISIONS").[A1].Sort _
Key1:=Sheets("TABDECISIONS").[A1], Order1:=xlAscending, Header:=xlGuess
'============= Calcul Résultats avec coefficients de prix
'
'============= Mise en forme Tabelau TABRESULCOEFPV
'============= Recopie du Modèle de Tableau des Rangs de Modeles dans TABRESULCOEFPV
Sheets("Modeles").Select
Sheets("Modeles").Range("A1:B2").Select
Selection.Copy
Sheets("TABRESULCOEFPV").Select
Sheets("TABRESULCOEFPV").Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("TABRESULCOEFPV").Select
For j = 2 To NbPeriodes + 1
Sheets("TABRESULCOEFPV").Range("A1").Cells(1, 2).Select
Selection.Copy
Sheets("TABRESULCOEFPV").Range("A1").Cells(1, j).Select
ActiveSheet.Paste
Sheets("TABRESULCOEFPV").Range("A1").Cells(1, j).Value = j - 1
Sheets("TABRESULCOEFPV").Range("A1").Cells(2, 2).Select
Selection.Copy
Sheets("TABRESULCOEFPV").Range("A1").Cells(2, j).Select
ActiveSheet.Paste
Next j
Sheets("TABRESULCOEFPV").Range("A2:GG2").Select
Selection.Copy
For i = 1 To NbEntreprises - 1
Sheets("TABRESULCOEFPV").Range("A2").Cells(i + 1, 1).Select
ActiveSheet.Paste
Next i
'========= Alimentation titre Tableau des Rangs
Sheets("TABRESULCOEFPV").Range("A1").Value = "Entreprise/Période"
Application.CutCopyMode = False
Sheets("TABRESULCOEFPV").Range("A2").Select
'============= Calcul du Tableau TABRESULCOEFPV()
'--- Recherche dernière ligne non vide de TABEFFETPRIX
NoLigneSup = Sheets("TABEFFETPRIX").[A65000].End(xlUp).Row
For i = 2 To NbLignes
If Sheets("TABDECISIONS").Range("A1").Cells(i, 4).Value <> Sheets("TABDECISIONS").Range("A1").Cells(i - 1, 4).Value Then
'====== Mémorisation no Entreprise
k = Sheets("TABDECISIONS").Range("A1").Cells(i, 2).Value
Sheets("TABRESULCOEFPV").Range("A2").Cells(k, 1).Value = Sheets("TABDECISIONS").Range("A1").Cells(i, 4).Value
End If
'======= Mémorisation de la période traitée i
l = Sheets("TABDECISIONS").Range("A1").Cells(i, 3).Value
'======= Alimentation du rang dans tableau
rang = Sheets("TABDECISIONS").Range("A1").Cells(i, 7).Value
'======= Calcul du coefficient : Recherche NoPeriod+Rang dans la table TABEFFETPRIX
For j = 2 To NoLigneSup
NoPeriodeTable = Sheets("TABEFFETPRIX").Cells(j, 1).Value
RangTable = Sheets("TABEFFETPRIX").Cells(j, 2).Value
If l = NoPeriodeTable And rang = RangTable Then
coef = Sheets("TABEFFETPRIX").Cells(j, 3).Value
GoTo Suite
End If
Next j
Suite:
'====== Recherche prix maxi de la Période
PrixDeVenteMaxi = Sheets("PERIODES").Cells(l + 1, 2).Value
'======= RAZ du coef si Prix proposé par Entreprise < Prix maximum pour la Période
PrixDeVenteProposé = Sheets("TABDECISIONS").Range("A1").Cells(i, 6)
If PrixDeVenteProposé > PrixDeVenteMaxi Then coef = zero
'======= Alimentation du rang dans TABRESULCOEFPV
Sheets("TABRESULCOEFPV").Range("A2").Cells(k, l + 1).Value = rang * coef
'----------- couleur de fond cellule
Sheets("TABRESULCOEFPV").Range("A2").Cells(k, l + 1).Interior.ColorIndex = 40
'======= Alimentation du rang dans TABDECISIONS
Sheets("TABDECISIONS").Select
Sheets("TABDECISIONS").Range("A1").Cells(i, 7).Select
Sheets("TABDECISIONS").Range("A1").Cells(i, 8) = rang * coef
Next i
'============= On revient sur le Menu
Sheets("Menu").Select
End Sub
Sub AppelResultatsForm()
'
' Ouverture du formulaire Resultats'
'
CalculResultats
Resultats.Show Modal
'
'
End Sub
Débutante sur ce forum et en VBA, je dois créer un fichier Excel qui utilise plusieurs macros et userforms.
Là je me trouve face à un mur, j'essaie de tourner la questions dans plusieurs sens mais impossible pour moi de résoudre. Voici mon problème :
J'ai une macro qui permet d'effectuer toute une série de choses dans mon fichier (calculs, classements etc...) et un userform qui ensuite est sensé afficher les résultats selon l'entreprise choisie.
J'aimerais qu'après avoir cliqué sur le bouton "résultats", la macro se lance puis avoir le Userform qui s'affiche directement ensuite. Mais je n'y arrive pas...
Si ça se trouve c'est un petit truc tout bête mais je n'arrive pas à trouver la solution.
Merci à tous d'avance pour votre aide !
Voici mon fichier "macro" :
Sub AppelCriteresForm()
'
' Ouverture du formulaire Période
'
Periode.Show Modal
'
End Sub
Sub AppelOffresForm()
'
' Ouverture du formulaire Reponse
'
Decision.Show Modal
'
End Sub
Sub CalculResultats()
'
' Dépouillement des Réponses enregistrées
'
'============= Initialisations
Dim rang As Integer
Dim NbEntreprises As Integer
Dim k As Integer
Dim l As Integer
Dim NbLignes As Integer
Dim NbColonnes As Integer
Dim NbPeriodes As Integer
Dim NoPeriodeTable As Integer
Dim RangTable As Integer
'============= Recopie de REPONSES dans TABDECISIONS
Sheets("REPONSES").Select
Sheets("REPONSES").Range("A1:G65000").Select
Selection.Copy
Sheets("TABDECISIONS").Select
Sheets("TABDECISIONS").Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
'============= On revient sur la feuille TABDECISIONS
Sheets("TABDECISIONS").Select
Range("A1").Select
'============= Calcul du nombre de lignes et de colonnes non vides sur la feuille TABDECISIONS
NbLignes = Cells.Find("*", , , , xlByRows, xlPrevious).Row
NbColonnes = Cells.Find("*", , , , xlByColumns, xlPrevious).Column
'============= Tri du Tableau des décisions sur Période et Prix de vente
Sheets("TABDECISIONS").[A1].Sort _
Key1:=Sheets("TABDECISIONS").[C2], Order1:=xlAscending, _
Key2:=Sheets("TABDECISIONS").[F2], Order2:=xlAscending, Header:=xlGuess
'============= Calcul du Rang
NbEntreprises = 0
For i = 2 To NbLignes
'========== Nouvelle Période
If Range("A1").Cells(i, 3).Value <> Range("A1").Cells(i - 1, 3).Value Then rang = 0
'========== +1 dans le rang
rang = rang + 1
'========== Affectation rang si prix différent du prix suivant
If Range("A1").Cells(i, 6) <> Range("A1").Cells(i + 1, 6) Then Range("A1").Cells(i, 7) = rang
'========== mémorisation nb Entreprises
If Range("A1").Cells(i, 2) > NbEntreprises Then NbEntreprises = Range("A1").Cells(i, 2)
'========== mémorisation dernière période
If Range("A1").Cells(i, 3) > NbPeriodes Then NbPeriodes = Range("A1").Cells(i, 3)
Next i
'========== Affectation du rang à zéro par le rang précédent
For i = NbLignes To 2 Step -1
If Range("A1").Cells(i, 7).Value = "0" Then
Range("A1").Cells(i, 7).Value = Range("A1").Cells(i + 1, 7)
End If
Next i
'============= Tri du Tableau sur NoEntrepise et Periode
Sheets("TABDECISIONS").[A1].Sort _
Key1:=Sheets("TABDECISIONS").[B2], Order1:=xlAscending, _
Key2:=Sheets("TABDECISIONS").[C2], Order2:=xlAscending, Header:=xlGuess
'============= Mise en forme Tabelau RESULRANGPV
'============= Recopie du Modèle de Tableau des Rangs de Modeles dans TABDECISIONS
Sheets("Modeles").Select
Sheets("Modeles").Range("A1:B2").Select
Selection.Copy
Sheets("FRANGSPV").Select
Sheets("FRANGSPV").Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("FRANGSPV").Select
For j = 2 To NbPeriodes + 1
Sheets("FRANGSPV").Range("A1").Cells(1, 2).Select
Selection.Copy
Sheets("FRANGSPV").Range("A1").Cells(1, j).Select
ActiveSheet.Paste
Sheets("FRANGSPV").Range("A1").Cells(1, j).Value = j - 1
Sheets("FRANGSPV").Range("A1").Cells(2, 2).Select
Selection.Copy
Sheets("FRANGSPV").Range("A1").Cells(2, j).Select
ActiveSheet.Paste
Next j
Sheets("FRANGSPV").Range("A2:GG2").Select
Selection.Copy
For i = 1 To NbEntreprises - 1
Sheets("FRANGSPV").Range("A2").Cells(i + 1, 1).Select
ActiveSheet.Paste
Next i
'========= Alimentation titre Tableau des Rangs
Sheets("FRANGSPV").Range("A1").Value = "Entreprise/Période"
Application.CutCopyMode = False
Sheets("FRANGSPV").Range("A2").Select
'============= Calcul du Tableau RESULRANGPV()
For i = 2 To NbLignes
If Sheets("TABDECISIONS").Range("A1").Cells(i, 4).Value <> Sheets("TABDECISIONS").Range("A1").Cells(i - 1, 4).Value Then
'====== Mémorisation no Entreprise
k = Sheets("TABDECISIONS").Range("A1").Cells(i, 2).Value
Sheets("FRANGSPV").Range("A2").Cells(k, 1).Value = Sheets("TABDECISIONS").Range("A1").Cells(i, 4).Value
End If
'======= Mémorisation de la période traitée i
l = Sheets("TABDECISIONS").Range("A1").Cells(i, 3).Value
'======= Alimentation du rang dans tableau
Sheets("FRANGSPV").Range("A2").Cells(k, l + 1).Value = Sheets("TABDECISIONS").Range("A1").Cells(i, 7).Value
'----------- couleur de fond cellule
Sheets("FRANGSPV").Range("A2").Cells(k, l + 1).Interior.ColorIndex = 40
Next i
'============= Tri du Tableau TABDECISIONS sur No de ligne
Sheets("TABDECISIONS").[A1].Sort _
Key1:=Sheets("TABDECISIONS").[A1], Order1:=xlAscending, Header:=xlGuess
'============= Calcul Résultats avec coefficients de prix
'
'============= Mise en forme Tabelau TABRESULCOEFPV
'============= Recopie du Modèle de Tableau des Rangs de Modeles dans TABRESULCOEFPV
Sheets("Modeles").Select
Sheets("Modeles").Range("A1:B2").Select
Selection.Copy
Sheets("TABRESULCOEFPV").Select
Sheets("TABRESULCOEFPV").Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("TABRESULCOEFPV").Select
For j = 2 To NbPeriodes + 1
Sheets("TABRESULCOEFPV").Range("A1").Cells(1, 2).Select
Selection.Copy
Sheets("TABRESULCOEFPV").Range("A1").Cells(1, j).Select
ActiveSheet.Paste
Sheets("TABRESULCOEFPV").Range("A1").Cells(1, j).Value = j - 1
Sheets("TABRESULCOEFPV").Range("A1").Cells(2, 2).Select
Selection.Copy
Sheets("TABRESULCOEFPV").Range("A1").Cells(2, j).Select
ActiveSheet.Paste
Next j
Sheets("TABRESULCOEFPV").Range("A2:GG2").Select
Selection.Copy
For i = 1 To NbEntreprises - 1
Sheets("TABRESULCOEFPV").Range("A2").Cells(i + 1, 1).Select
ActiveSheet.Paste
Next i
'========= Alimentation titre Tableau des Rangs
Sheets("TABRESULCOEFPV").Range("A1").Value = "Entreprise/Période"
Application.CutCopyMode = False
Sheets("TABRESULCOEFPV").Range("A2").Select
'============= Calcul du Tableau TABRESULCOEFPV()
'--- Recherche dernière ligne non vide de TABEFFETPRIX
NoLigneSup = Sheets("TABEFFETPRIX").[A65000].End(xlUp).Row
For i = 2 To NbLignes
If Sheets("TABDECISIONS").Range("A1").Cells(i, 4).Value <> Sheets("TABDECISIONS").Range("A1").Cells(i - 1, 4).Value Then
'====== Mémorisation no Entreprise
k = Sheets("TABDECISIONS").Range("A1").Cells(i, 2).Value
Sheets("TABRESULCOEFPV").Range("A2").Cells(k, 1).Value = Sheets("TABDECISIONS").Range("A1").Cells(i, 4).Value
End If
'======= Mémorisation de la période traitée i
l = Sheets("TABDECISIONS").Range("A1").Cells(i, 3).Value
'======= Alimentation du rang dans tableau
rang = Sheets("TABDECISIONS").Range("A1").Cells(i, 7).Value
'======= Calcul du coefficient : Recherche NoPeriod+Rang dans la table TABEFFETPRIX
For j = 2 To NoLigneSup
NoPeriodeTable = Sheets("TABEFFETPRIX").Cells(j, 1).Value
RangTable = Sheets("TABEFFETPRIX").Cells(j, 2).Value
If l = NoPeriodeTable And rang = RangTable Then
coef = Sheets("TABEFFETPRIX").Cells(j, 3).Value
GoTo Suite
End If
Next j
Suite:
'====== Recherche prix maxi de la Période
PrixDeVenteMaxi = Sheets("PERIODES").Cells(l + 1, 2).Value
'======= RAZ du coef si Prix proposé par Entreprise < Prix maximum pour la Période
PrixDeVenteProposé = Sheets("TABDECISIONS").Range("A1").Cells(i, 6)
If PrixDeVenteProposé > PrixDeVenteMaxi Then coef = zero
'======= Alimentation du rang dans TABRESULCOEFPV
Sheets("TABRESULCOEFPV").Range("A2").Cells(k, l + 1).Value = rang * coef
'----------- couleur de fond cellule
Sheets("TABRESULCOEFPV").Range("A2").Cells(k, l + 1).Interior.ColorIndex = 40
'======= Alimentation du rang dans TABDECISIONS
Sheets("TABDECISIONS").Select
Sheets("TABDECISIONS").Range("A1").Cells(i, 7).Select
Sheets("TABDECISIONS").Range("A1").Cells(i, 8) = rang * coef
Next i
'============= On revient sur le Menu
Sheets("Menu").Select
End Sub
Sub AppelResultatsForm()
'
' Ouverture du formulaire Resultats'
'
CalculResultats
Resultats.Show Modal
'
'
End Sub