Astuces et code VBA pour Exce Rubriques Classeurs (Workbooks) Contrôles et Form
Astuces et code VBA pour Exce Rubriques Classeurs (Workbooks) Contrôles et Formulaires Feuilles (Worksheets) Fichiers (XL ou autres) Fonctions Formules Graphiques Menus Sélection OLE Automation Excel <--> Access (DAO) Commandes diverses Programmes divers ... Téléchargement sur site http://ericrenaud.free.fr/ Les classeurs Excel (Workbooks) Page mise à jour le : 28/03/2001 Vous trouverez dans cette rubrique des exemples de programmes se rapportant aux classeurs. Ajouter des feuilles dans un classeur et les renommer. Enregistrer une copie du classeur (sans modifier le classeur ouvert). Fermer tous les classeurs ouverts sauf le classeur actif. Renommer les onglets d'un classeur (Ex. Mois1, Mois2, Mois3, etc...). Trier les onglets d'un classeur. Ajouter des feuilles dans un classeur et les renommer Sub AjouterRenommerFeuilles() Dim cpt As Integer cpt = 1 Do While cpt < 4 ' Ajoute 3 feuilles ' Ajout d'une feuille Application.Sheets.Add After:=Sheets.Item(Sheets.Count), Type:=xlWorksheet ' Renomme la feuille Application.ActiveSheet.Name = "Semaine " & CStr(cpt) cpt = cpt + 1 Loop End Sub Enregistrer une copie du classeur Sub SaveCopyAs() ActiveWorkbook.SaveCopyAs "C:\excel\MonDouble.xls" End Sub Fermer tous les classeurs ouverts (sauf le classeur actif) Sub FermeClasseurs() For Each Wk In Workbooks If Wk.Name <> ThisWorkbook.Name Then Wk.Close savechanges:=True End If Next Wk End Sub Renommer les onglets d'un classeur Sub RenommeOnglets() ' Renomme les onglets CL1, CL2, CL3, etc ... Dim I As Integer Application.ScreenUpdating = False For I = 1 To 3 Worksheets(I).Name = "CL" & I Next I End Sub Trier les onglets d'un classeur 1 Sub TriNomsOnglets() Dim I As Integer, J As Integer For I = 1 To Sheets.Count For J = 1 To I - 1 If UCase(Sheets(I).Name) < UCase(Sheets(J).Name) Then Sheets(I).Move Before:=Sheets(J) Exit For End If Next J Next I End Sub Contrôles divers en VBA Page mise à jour le : 14/05/2002 Vous trouverez dans cette rubrique des exemples sur les différents contrôles comme TextBox, ComboBox, ListBox, Bouton d'option, Case à cocher, calendrier, indicateur de progression, etc... Ces contrôles s'utilisent sur un Userform (ou formulaire) Quelques notions de base ... Comment créer un Userform ? Depuis une feuille Excel, tapez ALT+F11 ou par le menu Outils, Macro, Visual Basic Editor. Vous affichez l'environnement Visual Basic Editor. Insérer un Userform à l'aide du menu Insertion, Userform. La boîte à outils doit s'afficher, sinon utilisez le menu Affichage, Boîte à outils. Pour placer un contrôle sur un Userform : 1 - Sélectionner le contrôle désiré dans la fenêtre Boîte à outils 2 - Cliquer sur le contrôle choisi avec le bouton gauche de la souris et sans relacher celui-ci, déplacer le contrôle vers le Userform puis relacher le bouton de la souris. Voici les principaux contrôles de la boîte à outils (ci-dessous). Les boîtes de dialogue Boite de dialogue avec bouton d'option. Le Userform (DlgChoix) Le code Code lançant l'ouverture de la boîte de dialogue 2 Sub AfficheBoutonsOption() DlgChoix.Show End Sub Code d'ouverture du formulaire Private Sub UserForm_Activate() DlgChoix.ChoixPaire.Value = True End Sub Nota : A l'ouverture du formulaire la case France est cochée par défaut. Code des boutons 1 / Bouton OK Private Sub OK_Click() DlgChoix.Hide If DlgChoix.ChoixPaire Then Msg = "Vous avez choisi l'activité France." Style = vbOKOnly + vbInformation Title = "Activité Commerciale - © E. RENAUD - Novembre 1999" Response = MsgBox(Msg, Style, Title) Else Msg = "Vous avez choisi l'activité Export." Style = vbOKOnly + vbInformation Title = "Activité Commerciale - © E. RENAUD - Novembre 1999" Response = MsgBox(Msg, Style, Title) End If End Sub 2 / Bouton Annuler Private Sub Annuler_Click() DlgChoix.Hide End Sub Boite de dialogue avec case à cocher. Le Userform (CasesACocher) Le code Code lançant l'ouverture de la boîte de dialogue Sub AfficheCaseACocher() Range("A3:C3").Select Selection.ClearContents CasesACocher.Show End Sub Code d'ouverture du formulaire Private Sub UserForm_Activate() ' Remplace la propriéte TripleState mise à True(CheckBox1) CheckBox1.Value = Null CheckBox2.Value = False CheckBox3.Value = False End Sub Nota : A l'ouverture du formulaire la case Français est coché mais en grisée. Code des boutons 3 1 / Bouton OK Private Sub OK_Click() Dim Langue1 As String Dim Langue2 As String Dim Langue3 As String If CheckBox1.Value = False Then Langue1 = "Non" Else Langue1 = "Oui" End If If CheckBox2.Value = False Then Langue2 = "Non" Else Langue2 = "Oui" End If If CheckBox3 = False Then Langue3 = "Non" Else Langue3 = "Oui" End If CasesACocher.Hide Range("A3").Value = Langue1 Range("B3").Value = Langue2 Range("C3").Value = Langue3 Range("A1").Select End Sub 2 / Bouton Annuler Private Sub Annuler_Click() CasesACocher.Hide End Sub Le résultat Boite de dialogue avec liste déroulante. Le Userform (ListeDeroulante) Le code Code lançant l'ouverture de la liste déroulante Sub AfficheListeDeroulante() ListeDeroulante.Show End Sub Code d'ouverture du formulaire Private Sub UserForm_Activate() DerniereMarque = Range("A1").End(xlDown).Address ' Plage de données pour afficher dans liste déroulante Marque.RowSource = "A1:" & DerniereMarque ' Afficher la première marque de la liste (0 = Fiat) Marque.ListIndex = 0 End Sub Code des boutons 4 1 / Bouton Valider Private Sub Valider_Click() ListeDeroulante.Hide ' Marque est le nom donné au contrôle ListBox Index = Marque.ListIndex ChoixMarque = Marque.List(Index) ' Stockage du choix effectué dans la liste déroulante en D2 Range("D2").Value = ChoixMarque End Sub 2 / Bouton Annuler Private Sub Annuler_Click() ListeDeroulante.Hide End Sub Les données utilisées pour remplir la liste déroulante Boite de dialogue avec liste déroulante modifiable. Le Userform (ListeDeroulanteModifiable) Les contrôles Nom de la ComboBox = Constructeur Nom du CommandButton "Valider Choix" = OK Nom du CommandButton "Annuler" = Annuler Le code Code lançant l'ouverture de la boîte de dialogue Sub AfficheListeDeroulanteModifiable() ListeDeroulanteModifiable.Show End Sub Code d'ouverture du formulaire 5 Private Sub UserForm_Activate() ' Utilisation de l'option AddItem Dim Arr() As String Dim I As Integer, NbSheets As Integer Dim Liste As Object Set Liste = Worksheets(1).Cells(1, 1).Resize(Worksheets("Feuil1") _ .Cells(1, 1).CurrentRegion.Rows.Count - 1, 1) NbConstructeurs = Application.CountA(Range("A1").EntireColumn) ListeDeroulanteModifiable.Constructeur.Clear ReDim Arr(1 To NbConstructeurs) For I = 1 To NbConstructeurs Arr(I) = Liste(I).Value ListeDeroulanteModifiable.Constructeur.AddItem Arr(I) Next Constructeur.ListIndex = 0 End Sub Code des boutons 1 / Bouton OK Private Sub OK_Click() ListeDeroulanteModifiable.Hide Application.ScreenUpdating = False ' Constructeur est le nom donné au contrôle ComboBox Marque = Constructeur.Value ' Stockage du choix effectué dans la liste déroulante en D2 Range("D2").Value = Marque Columns("A:A").Select On Error GoTo Ajoute Selection.Find(What:=Marque, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False).Activate Range("A1").Select Exit Sub Ajoute: ' Une nouvelle marque étant ajoutée, ajout de celle-ci à la fin de la colonne A Range("A1").End(xlDown).Offset(1, 0).Value = Marque ' Tri des marques en ordre croissant Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom ' Sélectionne la plage et recolore la plage des marques après ajout nouvelle marque With Worksheets(1) .Range(.[A1], .[A1].End(xlDown)).Select End With With Selection.Interior .ColorIndex = 20 .PatternColorIndex = xlAutomatic End With Range("A1").Select End Sub 2 / Bouton Annuler Private Sub Annuler_Click() ListeDeroulanteModifiable.Hide End Sub Les données utilisées pour remplir la liste déroulante Boite de dialogue avec liste déroulante modifiable. Le Userform (ListeDeroulanteModifiable) 6 Les contrôles Nom de la ComboBox = Constructeur Nom du CommandButton "Valider Choix" = OK Nom du CommandButton "Annuler" = Annuler Le code Code lançant l'ouverture de la boîte de dialogue Sub AfficheListeDeroulanteModifiable() ListeDeroulanteModifiable.Show End Sub Code d'initialisation du formulaire Private Sub UserForm_Initialize() Me.Constructeur.RowSource = "Feuil1!A1:A" & Sheets("Feuil1").Cells(1, 1).End(xlDown).Row End Sub Code d'activation du formulaire Private Sub UserForm_Activate() Me.Constructeur.ListIndex = -1 End Sub Code des boutons 1 / Bouton OK Private Sub OK_Click() Me.Hide If Me.Constructeur.ListIndex = -1 Then Sheets("Feuil1").Cells(1, 1).End(xlDown).Offset(1, 0).Value = Me.Constructeur.Value ' Tri de la plage de données suite à l'ajout d'un élément Sheets("Feuil1").Range([A1], [A1].End(xlDown)).Select Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom Else End If ' Mise en place de la valeur choisie en D2 Sheets("Feuil1").Cells(2, 4).Value = Me.Constructeur.Value End Sub 2 / Bouton Annuler Private Sub Annuler_Click() ListeDeroulanteModifiable.Hide End Sub Les données utilisées pour remplir la liste déroulante 7 Boite de dialogue avec sélection multiple dans liste déroulante. Le Userform (DlgChoixMultiple) Les contrôles Nom de la ListBox = ListeClients Nom du CommandButton "OK" = OK Nom du CommandButton "Annuler" = Annuler Le code Code lançant l'ouverture de la boîte de dialogue Sub AfficheListeDeroulanteMultiSelect() DlgChoixMutliple.Show End Sub Code d'initialisation du formulaire Private Sub UserForm_Initialize() ' Les données proviennent de la feuille Feuil1 et sont dans les colonnes A et B With Sheets("Feuil1").Range("A1") Me.ListeClients.RowSource = Range(.Cells, .End(xlDown)(1, 2)).Address(External:=True) End With End Sub Code d'activation du formulaire Private Sub UserForm_Activate() ' Effacement des données de la plage qui reçoit les items sélectionnés (colonnes D et E) Range("D1:E1", Cells(ListeClients.ListCount, 4)).Clear ' Propriété Multiselect du contrôle ListeClients mis sur fmMultiSelectExtended ListeClients.MultiSelect = fmMultiSelectExtended End Sub Code des boutons 1 / Bouton OK Private Sub OK_Click() DlgChoixMultiple.Hide j = 1 With ListeClients For i = 0 To .ListCount - 1 If .Selected(i) = True Then ' Le résultat est placé dans les colonnes D et E de la feuille Feuil1 Cells(j, 4) = .List(i, 0): Cells(j, 5) = .List(i, 1) .Selected(i) = False j = j + 1 End If Next End With End Sub 2 / Bouton Annuler Private Sub Annuler_Click() DlgChoixMultiple.Hide End Sub Le résultat par rapport à la sélection dans le formulaire (voir image du Userform au début de la page) 8 Boite de dialogue avec liste déroulante à 2 colonnes. Le Userform uploads/S4/ astuces-et-code-vba-pour-excel-en-francais.pdf
Documents similaires
-
19
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Mai 23, 2021
- Catégorie Law / Droit
- Langue French
- Taille du fichier 0.7510MB