Formulaire Excel automatisé
Formulaire Excel Interactif avec Choix de l'Onglet Automatisé
🎯 Dans ce tutoriel Excel, découvrez comment créer un formulaire interactif pour automatiser l'enregistrement de vos données sur un ou sur tous les onglets en une seule fois.
⌚ Ce formulaire est un outil puissant qui vous fera gagner du temps, vous évitant de naviguer constamment entre tous vos onglets.
✅ De plus, vous spouvez adapter ce formulaire dynamique selon vos besoins.
👍 Mais ce n'est pas tout, en un seul clic, vous pouvez enregistrer automatiquement un onglet dans un nouveau fichier Excel, ce qui est bien utile lorsque vous avez besoin de partager des données spécifiques, par exemple via le Cloud ou par Email.
➡️ Et enfin, vous avez la possibilité d'ajouter automatiquement un nouvel onglet à votre fichier Excel.
Voir la vidéo pour suivre les différentes étapes :
Pour vous entraîner et suivre les étapes de ce tutoriel,
➡️ Télécharger le fichier Excel utilisé dans la vidéo.
👇
Après avoir ouvert le lien :
- Vous cliquez sur "Fichier",
- puis sur "Enregistrer sous", ou sur "Créer une copie",
- et sur "Télécharger une copie".
Un autre tutoriel qui pourrait vous intéresser :
📌↪️→ Code VBA à utiliser pour filtrer et copier vos données automatiquement sur un nouvel onglet :
Sub EnregistrerSurFeuille(ws As Worksheet)
Dim derniereLigne As Long
derniereLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1
Dim i As Integer
For i = 0 To 6 ' Copier les cellules de E3 à E9
With ws.Cells(derniereLigne, i + 1)
.Value = Cells(3 + i, "E").Value
.Font.Color = Cells(3 + i, "E").Font.Color
.Borders.LineStyle = Cells(3 + i, "E").Borders.LineStyle
.Borders.Color = RGB(191, 191, 191)
.HorizontalAlignment = Cells(3 + i, "E").HorizontalAlignment
.VerticalAlignment = Cells(3 + i, "E").VerticalAlignment
.WrapText = True
End With
Next i
End Sub
Sub EnregistrerDonnees()
Dim ws As Worksheet
Dim nomDestinataire As String
nomDestinataire = Range("E9").Value ' Le nom du destinataire est dans la cellule E9
If nomDestinataire = "Tous" Then
For Each ws In ThisWorkbook.Sheets
If ws.Index <> 1 Then
EnregistrerSurFeuille ws
End If
Next ws
Else
' Vérifier si l'onglet existe
On Error Resume Next
Set ws = ThisWorkbook.Sheets(nomDestinataire)
On Error GoTo 0
' Si l'onglet n'existe pas, afficher une boîte de dialogue et quitter la macro
If ws Is Nothing Then
MsgBox "L'onglet " & nomDestinataire & " n'existe pas."
Exit Sub
End If
EnregistrerSurFeuille ws
End If
MsgBox "Les données ont été enregistrées."
AjusterHauteurLignes
End Sub
Sub AjusterHauteurLignes()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
If ws.Index <> 1 Then
ws.Rows.AutoFit
End If
Next ws
End Sub
Sub EffacerDonnees()
Range("E3:E9").ClearContents ' Effacer les cellules de E3 à E9
End Sub
Sub EnregistrerFeuilleDansNouveauFichier()
Dim ws As Worksheet
Dim nouveauClasseur As Workbook
Dim cheminFichier As Variant
Dim nomFeuille As String
' Demander à l'utilisateur de saisir le nom de la feuille à copier
nomFeuille = InputBox("Entrez le nom de la feuille à copier :", "Nom de la feuille")
If nomFeuille = "" Then
MsgBox "Opération annulée.", vbInformation
Exit Sub
End If
On Error Resume Next
Set ws = ThisWorkbook.Sheets(nomFeuille)
On Error GoTo 0
If ws Is Nothing Then
MsgBox "La feuille " & nomFeuille & " n'existe pas.", vbExclamation
Exit Sub
End If
Set nouveauClasseur = Workbooks.Add
ws.Copy Before:=nouveauClasseur.Sheets(1)
Application.DisplayAlerts = False
Do While nouveauClasseur.Sheets.Count > 1
nouveauClasseur.Sheets(nouveauClasseur.Sheets.Count).Delete
Loop
Application.DisplayAlerts = True
cheminFichier = Application.GetSaveAsFilename(FileFilter:="Excel Files (*.xlsx), *.xlsx")
If VarType(cheminFichier) = vbBoolean And cheminFichier = False Then
MsgBox "Opération annulée. Ce fichier sera fermé sans être enregistré.", vbInformation
nouveauClasseur.Close False
Exit Sub
End If
nouveauClasseur.SaveAs cheminFichier, FileFormat:=xlOpenXMLWorkbook
MsgBox "Le fichier a été enregistré.", vbInformation
End Sub
Sub AjouterOnglet()
Dim dernierOnglet As Worksheet
Dim nouveauOnglet As Worksheet
Dim dernierIndex As Integer
Dim nomOnglet As String
Dim col As Range
nomOnglet = InputBox("Entrez le nom du nouvel onglet :", "Ajouter Onglet")
If nomOnglet = "" Then
MsgBox "Opération annulée. Aucun nom d'onglet n'a été saisi.", vbExclamation
Exit Sub
End If
On Error Resume Next
Set dernierOnglet = ThisWorkbook.Sheets(nomOnglet)
On Error GoTo 0
If Not dernierOnglet Is Nothing Then
MsgBox "Un onglet avec ce nom existe déjà. Veuillez choisir un nom différent.", vbExclamation
Exit Sub
End If
dernierIndex = ThisWorkbook.Sheets.Count
Set dernierOnglet = ThisWorkbook.Sheets(dernierIndex)
Set nouveauOnglet = ThisWorkbook.Sheets.Add(After:=dernierOnglet)
dernierOnglet.Rows(1).Copy
nouveauOnglet.Rows(1).PasteSpecial Paste:=xlPasteAll
For Each col In dernierOnglet.UsedRange.Columns
nouveauOnglet.Columns(col.Column).ColumnWidth = col.ColumnWidth
Next col
nouveauOnglet.Rows("2:" & Rows.Count).ClearContents
nouveauOnglet.Name = nomOnglet
' Ajuster la hauteur des lignes pour les en-têtes
nouveauOnglet.Rows(1).AutoFit
nouveauOnglet.Cells(1, 1).Select
MsgBox "Un nouvel onglet nommé '" & nomOnglet & "' a été ajouté avec succès !", vbInformation
End Sub