Formulaire Excel et compilation de données

Isciane

XLDnaute Nouveau
Bonjour à tous,

Je suis toute nouvelle sur ce forum, et malheureusement encore trop débutante avec Excel !

Je souhaiterais réaliser un formulaire Excel qui une fois complété permettrait à son utilisateur de réaliser un choix entre 4 options et de valider ce choix. Le choix validé permettrait alors de compiler les données des 4 options et du choix final dans un tableau présent sur une autre feuille.

Or, je n'arrive pas à savoir comment réaliser cela, pourriez-vous m'aider ?

J'ai ajouté mon fichier Excel en PJ, j'ai toutefois dû supprimer d'autres feuilles permettant la recherche de données.

J'espère que vous pourrez m'aider, je suis bien entendu preneuse d'une explication détaillée pour mieux comprendre comment faire exactement !

Merci par avance,
Bien cordialement,
Isciane
 

Pièces jointes

  • 3-Fiches choix transports forum.xls
    45.5 KB · Affichages: 104

kjin

XLDnaute Barbatruc
Re : Formulaire Excel et compilation de données

Bonsoir et bienvenue,
Le plus simple à mon sens serait de créer un véritable formulaire (userform) mais pour cela il faudrait faire passer les datas concernant les trajets, absents dans le fichier que tu as fourni
A+
kjin
 

Isciane

XLDnaute Nouveau
Re : Formulaire Excel et compilation de données

Bonsoir et bienvenue,
Le plus simple à mon sens serait de créer un véritable formulaire (userform) mais pour cela il faudrait faire passer les datas concernant les trajets, absents dans le fichier que tu as fourni
A+
kjin

Bonsoir,

Malheureusement, mon fichier original est trop lourd (3Mo).
Y'a t'il un moyen pour vous le faire parvenir ?

Cordialement,
Isciane
 

KenDev

XLDnaute Impliqué
Re : Formulaire Excel et compilation de données

Bonjour Isciane, bonjour le fil,

Voici le fichier avec les opérations demandées.

J'ai collé ce code dans le module de la feuille comparaison
VB:
Option Explicit 'oblige à déclarer les variables dans les procédures (conseillé)

Sub Voiture_Clic() 'Macro du bouton Voiture
    Call Validation(15) 'appelle la macro Validation avec 1 paramètre : la ligne ou apparait voiture
End Sub

Sub Bus_Clic()
    Call Validation(16)
End Sub

Sub Train_Clic()
    Call Validation(17)
End Sub

Sub Avion_Clic()
    Call Validation(18)
End Sub

Sub Nouveau_Clic() 'Macro du bouton Nouveau

Dim oWs As Worksheet 'déclaration d'un objet feuille

    Set oWs = Worksheets("Comparaisons") 'initialisation de l'objet
    
    Range(oWs.Cells(6, 3), oWs.Cells(10, 3)).ClearContents 'efface la zone C6:C10
    Range(oWs.Cells(15, 2), oWs.Cells(18, 3)).ClearContents
    Range(oWs.Cells(21, 1), oWs.Cells(21, 7)).ClearContents
    oWs.Cells(8, 5).ClearContents 'efface la cellule E8
    
    Set oWs = Nothing 'libération de l'objet
    
End Sub

Puis dans un module standard celui ci :

VB:
Option Explicit

Sub Validation(vb As Byte)
'Macro appellée par les boutons de Validation
'elle exige 1 paramètre en entrée, un entier compris entre 0 et 255 (byte)

Dim oWsD As Worksheet
Dim oWsT As Worksheet
Dim vLLE As Long 'La variable est un entier (compris entre -2 147 483 648 et 2 147 483 647)
Dim i As Byte
Dim j As Byte

    'initialisation des objets feuille
    Set oWsD = Worksheets("Comparaisons")
    Set oWsT = Worksheets("Compilation trajets")
    
    'détermination de la ligne ou il faudra écrire
    'rows.count est le nombre de ligne d'un fichier excel (65536 version 2003)
    'avec end(xlup) on part donc de la cellule B65536 (Cells(Rows.Count, 2)) et on remonte vers le haut jusqu'a la première cellule non vide rencontrée
    'on ajoute 1 pour être sur une ligne vide
    vLLE = oWsT.Cells(Rows.Count, 2).End(xlUp).Row + 1
    
    'remplissage colonnes 2 à 7 et format date pour 3 d'entre elles
    'la ligne format pourra être effacé si le tableau est correctement formatté
    oWsT.Cells(vLLE, 2) = oWsD.Cells(4, 3)  '"Compilation trajets" colonne 2 = "Comparaisons" C4
    oWsT.Cells(vLLE, 3) = oWsD.Cells(4, 5)
    Range(oWsT.Cells(vLLE, 4), oWsT.Cells(vLLE, 6)).NumberFormat = "d-mmm" '"Compilation trajets" zone colonnes D:F prend ce format de date
    oWsT.Cells(vLLE, 4) = oWsD.Cells(6, 3)
    oWsT.Cells(vLLE, 5) = oWsD.Cells(8, 3)
    oWsT.Cells(vLLE, 6) = oWsD.Cells(8, 5)
    oWsT.Cells(vLLE, 7) = oWsD.Cells(10, 3)
    
    'remplissage colonnes 8 à 22, uniquement les couts et transports
    'on boucle car on a repéré un schéma répétitif dans les colonnes couts, temps à remplir
    For i = 1 To 4 '4 lignes de Voiture à Avion
        For j = 1 To 2 'la zone à écrire fait 2 colonnes
            Select Case i 'pour distinguer différents cas
                Case 1 To 3 'dans le cas Voiture, Bus, Train
                    oWsT.Cells(vLLE, 4 * i + 3 + j) = oWsD.Cells(14 + i, j + 1)
                Case 4 'dans le cas de l'avion on a ajouté 1 à cause de la colonne classe qui nous décale
                    oWsT.Cells(vLLE, 4 * i + 4 + j) = oWsD.Cells(14 + i, j + 1)
            End Select
        Next j
    Next i
    
    'remplissage colonnes 25 et 26
    oWsT.Cells(vLLE, 25) = oWsD.Cells(21, 1)
    oWsT.Cells(vLLE, 26) = oWsD.Cells(vb, 1) 'ici on utilise le paramètre d'entrée de la macro
    
    'libération des objets feuilles
    Set oWsD = Worksheets("Comparaisons")
    Set oWsT = Worksheets("Compilation trajets")
    
End Sub

Ce qui ne peut etre montré ici est la crétion des 5 boutons et l'affectation des macros correspondante. Cela se passe dans Excel et pas dans l'éditeur Visual Basic.

Le code est documenté mais si il y a des choses pas claires n'hésite pas.

Cordialement
 

Pièces jointes

  • 3-Fiches choix transports forum.zip
    36.2 KB · Affichages: 68

Discussions similaires

Statistiques des forums

Discussions
312 298
Messages
2 086 977
Membres
103 416
dernier inscrit
SEB28110