Inserer données ds tableau de suivi à partir d'un formulaire Excel - VBA

Bonjour,

Je débute le VBA, et je kiff.

Je débute un nouveau poste ou je dois assurer le suivi des demandes de dossiers, et j'aimerais automatiser les choses ; je m'explique :

ACTUELLEMENT : Les commerciaux me font des demandes de dossiers par mail, je les rentre à la mano dans mon tableau de suivi

CE QUE J'AIMERAIS : Les commerciaux remplissent un formulaire excel, et je clique sur un bouton sur mon tableau de suivi, et ça me renseigne toute la ligne de données.

En gros, je clique sur "import demande", je sélectionne le fichier excel formulaire que le commercial m'a envoyé, et ça rempli 1 ligne dans mon tableau de suivi automatiquement.

J'ai suivi différents tuto sur Youtube, etc, j'arrive à peu pres à un résultat, j'ai bien des lignes qui se crée etc, mais elle se crée d'en haut du tableau alors que j'aimerais qu'elles se créent en bas, et les données que je veux importer se créent en bas aetc.. bref c'est le bord*l !! ^^

Mon formulaire : (actuellement sur un autre onglet de mon tableau, parce que je ne sais pas comment aller chercher un autre fichier sur mon ordi)

image

et un aperçu de mon tableau :

image

Etant donné que j'ai déjà trouvé réponse ici, et rapidement, je suis sûr que les experts ici ça leur prendra genre 5 min de me faire un truc propre, alors je me permets cet HELP !!

Des bisoooo,

PEACE

et Merci d'avance,

J'oubliais , évidemment, mon code pourri :

Private Sub CommandButton1_Click()

'conditions formulaire correctement renseigné

If Range("c5") = "" Or Range("c6") = "" Or Range("c8") = "" Or Range("c9") = "" Or Range("c11") = "" Or Range("c12") = "" Or Range("c13") = "" Or Range("c14") = "" Or Range("c16") = "" Or Range("c17") = "" Or Range("c18") = "" Or Range("c19") = "" Or Range("c20") = "" Or Range("c22") = "" Or Range("c23") = "" Then
MsgBox ("NOPE ! Le formulaire n'est pas complet !")

'Si les cellules sont vides alors changer la couleur de fond en jaune"

If Range("c5") = "" Then
Range("c5").Interior.ColorIndex = 6
Else
Range("c5").Interior.ColorIndex = 0
End If

If Range("c6") = "" Then
Range("c6").Interior.ColorIndex = 6
Else
Range("c6").Interior.ColorIndex = 0
End If

If Range("c8") = "" Then
Range("c8").Interior.ColorIndex = 6
Else
Range("c8").Interior.ColorIndex = 0
End If

If Range("c9") = "" Then
Range("c9").Interior.ColorIndex = 6
Else
Range("c9").Interior.ColorIndex = 0
End If

If Range("c11") = "" Then
Range("c11").Interior.ColorIndex = 6
Else
Range("c11").Interior.ColorIndex = 0
End If

If Range("c12") = "" Then
Range("c12").Interior.ColorIndex = 6
Else
Range("c12").Interior.ColorIndex = 0
End If

If Range("c13") = "" Then
Range("c13").Interior.ColorIndex = 6
Else
Range("c13").Interior.ColorIndex = 0
End If

If Range("c14") = "" Then
Range("c14").Interior.ColorIndex = 6
Else
Range("c14").Interior.ColorIndex = 0
End If

If Range("c16") = "" Then
Range("c16").Interior.ColorIndex = 6
Else
Range("c16").Interior.ColorIndex = 0
End If

If Range("c17") = "" Then
Range("c17").Interior.ColorIndex = 6
Else
Range("c17").Interior.ColorIndex = 0
End If

If Range("c18") = "" Then
Range("c18").Interior.ColorIndex = 6
Else
Range("c18").Interior.ColorIndex = 0
End If

If Range("c19") = "" Then
Range("c19").Interior.ColorIndex = 6
Else
Range("c19").Interior.ColorIndex = 0
End If

If Range("c20") = "" Then
Range("c20").Interior.ColorIndex = 6
Else
Range("c20").Interior.ColorIndex = 0
End If

If Range("c22") = "" Then
Range("c22").Interior.ColorIndex = 6
Else
Range("c22").Interior.ColorIndex = 0
End If

If Range("c23") = "" Then
Range("c23").Interior.ColorIndex = 6
Else
Range("c23").Interior.ColorIndex = 0
End If

Else

'Couleur de fond en blanc pour les cellules C92 à C110

Range("c5").Interior.ColorIndex = 0
Range("c6").Interior.ColorIndex = 0
Range("c8").Interior.ColorIndex = 0
Range("c9").Interior.ColorIndex = 0
Range("c11").Interior.ColorIndex = 0
Range("c12").Interior.ColorIndex = 0
Range("c13").Interior.ColorIndex = 0
Range("c14").Interior.ColorIndex = 0
Range("c16").Interior.ColorIndex = 0
Range("c17").Interior.ColorIndex = 0
Range("c18").Interior.ColorIndex = 0
Range("c19").Interior.ColorIndex = 0
Range("c20").Interior.ColorIndex = 0
Range("c22").Interior.ColorIndex = 0
Range("c23").Interior.ColorIndex = 0

Dim wk_fichier As Workbook
Dim ws_import_DDC As Worksheet
Dim ws_GENERAL As Worksheet
Dim lstrw As Long
Dim ligne_coller As Long

'Definir les variables fichiers et onglets

Set wk_fichier = ActiveWorkbook
Set ws_import_DDC = wk_fichier.Worksheets(1)
Set ws_GENERAL = wk_fichier.Worksheets(2)

'identifier dernière ligne colonne Q GENERAL
lstrw = ws_GENERAL.Cells(Rows.Count, 17).End(xlUp).Row

[TableauG].Rows(1).Insert

ligne_coller = lstrw + 1

ws_GENERAL.Cells(ligne_coller, 17) = ws_import_DDC.Range("c5")


End If

End Sub

Hello,

Dans un premier temps je te conseille de remplacer une partie de ton code par celui que je te propose.

Et ensuite je pense que 2 fichiers exemple serait mieux.

remplacer :

If Range("c5") = "" Or Range("c6") = "" Or Range("c8") = "" Or Range("c9") = "" Or Range("c11") = "" Or Range("c12") = "" Or Range("c13") = "" Or Range("c14") = "" Or Range("c16") = "" Or Range("c17") = "" Or Range("c18") = "" Or Range("c19") = "" Or Range("c20") = "" Or Range("c22") = "" Or Range("c23") = "" Then
MsgBox ("NOPE ! Le formulaire n'est pas complet !")

'Si les cellules sont vides alors changer la couleur de fond en jaune"

If Range("c5") = "" Then
Range("c5").Interior.ColorIndex = 6
Else
Range("c5").Interior.ColorIndex = 0
End If

If Range("c6") = "" Then
Range("c6").Interior.ColorIndex = 6
Else
Range("c6").Interior.ColorIndex = 0
End If

If Range("c8") = "" Then
Range("c8").Interior.ColorIndex = 6
Else
Range("c8").Interior.ColorIndex = 0
End If

If Range("c9") = "" Then
Range("c9").Interior.ColorIndex = 6
Else
Range("c9").Interior.ColorIndex = 0
End If

If Range("c11") = "" Then
Range("c11").Interior.ColorIndex = 6
Else
Range("c11").Interior.ColorIndex = 0
End If

If Range("c12") = "" Then
Range("c12").Interior.ColorIndex = 6
Else
Range("c12").Interior.ColorIndex = 0
End If

If Range("c13") = "" Then
Range("c13").Interior.ColorIndex = 6
Else
Range("c13").Interior.ColorIndex = 0
End If

If Range("c14") = "" Then
Range("c14").Interior.ColorIndex = 6
Else
Range("c14").Interior.ColorIndex = 0
End If

If Range("c16") = "" Then
Range("c16").Interior.ColorIndex = 6
Else
Range("c16").Interior.ColorIndex = 0
End If

If Range("c17") = "" Then
Range("c17").Interior.ColorIndex = 6
Else
Range("c17").Interior.ColorIndex = 0
End If

If Range("c18") = "" Then
Range("c18").Interior.ColorIndex = 6
Else
Range("c18").Interior.ColorIndex = 0
End If

If Range("c19") = "" Then
Range("c19").Interior.ColorIndex = 6
Else
Range("c19").Interior.ColorIndex = 0
End If

If Range("c20") = "" Then
Range("c20").Interior.ColorIndex = 6
Else
Range("c20").Interior.ColorIndex = 0
End If

If Range("c22") = "" Then
Range("c22").Interior.ColorIndex = 6
Else
Range("c22").Interior.ColorIndex = 0
End If

If Range("c23") = "" Then
Range("c23").Interior.ColorIndex = 6
Else
Range("c23").Interior.ColorIndex = 0
End If

Par :

    Dim varTabCellule As Variant, varCellule As Variant
    Dim booFormIncomplet As Boolean

    varTabCellule = Array("c5", "c6", "c8") 'ici ajouter les cellules à tester
    For Each varCellule In varTabCellule
        If Range(varCellule) = Empty Then
            booFormIncomplet = True
            Range(varCellule).Interior.ColorIndex = 6
        Else: Range(varCellule).Interior.ColorIndex = 0
        End If
    Next varCellule
    if booFormIncomplet = True then MsgBox "NOPE ! Le formulaire n'est pas complet !"

Super,

Je te remercie pour ta réponse,

Toutefois, cette partie là fonctionnait comme tel, meme dans sa forme la plus indigeste ^^

Merci beaucoup pour les conseils, mais c'est pour le reste que j'ai du mal...

Si tu as des tips je veux bien, j'aurais besoin que ce soit terminé ce week-end mon affaire :(

MERCI encore

@RAG02700 Je vous joins ici deux fichiers, les fichiers que j'ai fais initiallement je l'ai découpé en deux fichiers, le formulaire à remplir, et a importer dans le tableau LDA

J'espère que ça vous aidera à faire avancer le Schmilblik, ce serait magnifique !

Merci beaucoup d'avance

PEACE <3

Hello,

Voici une proposition

RAG,

MERCI BCP, t'es un génie, mais alors, je ne comprends pas grand chose à ton code il m'a l'air tellement plus complexe que ce que je peux trouver sur les tutos youtube ^^

Penses-tu qu'on pourrait séparer le formulaire Import DDC du tableau de suivi ?

Ce serait top, hate de te lire..

Penses-tu qu'on pourrait séparer le formulaire Import DDC du tableau de suivi ?

Entends tu par là que le formulaire serait dans un autre fichier que ta base de donnée ?

oui c'est ça, en fait, ce formulaire, n'importe quel commercial pourrait me le remplir et me le renvoyer par mail .

Je pense que le fichier ne devra pas changer de noms, mais qu'ile devra être complet et nommé avec le bon nom (pour les maccros)

à partir de là, n'importe quel formulaire, envoyé de la part de n'importe quel commercial, pourra être intégré.

tu vois ?

je suppose aussi, que je devrais enregistrer ces formulaires au bon endroit pour que les chemins de recherches de la maccro soit OK. par rapport à mon tableau de suivi.

Je pense que ce ne doit pas être grand chose à faire depuis ton code VBA qui a l'air d'etre construit de manière très pro, puisque conçu avec des variables etc..

Je suis sûr que c'est un détail pour toi,

demander à ma maccro de charger un fichier formulaire, l'intégrer, et créer ma ligne.

PEACE

Merci encore :)

Je vis sur lyon, si tu es dans le coin je tinvite au restau !!!

Hello,

Voici le topo :

1 dossier avec uniquement des fichiers formulaire. A indiquer dans la variable strDossier + mettre le "\" à la fin

Dans le fichier formulaire tu dois avoir une feuille nommée "Import_DDC" avec un tableau nommé "Form_General" (Le même que dans le fichier ci-dessous)

J'ai enlevé les couleurs car pas intéressant si vérification de plusieurs fichiers. J'ai ajouté une liste de fichiers incomplet en colonne H du fichier.

Je te conseil donc de faire des noms de fichier différents.

Je n'ai pas testé le fichier.

RAG, Merci beaucoup pour le temps investi et les explications, j'ai passé la journée entière d'aujourd'hui pour comprendre ton fichier d'hier ^^

Et je vais surement passer la journée de demain pour comprendre ton VBA d'aujourd'hui, en tous cas, je ne sais pas comment te remercier franchement...

Tes codes sont vraiment clean, c'est un truc de fou, c'est inspirant, ça me donne encore plus envie de my mettre.

MERCI MERCI MERCI !!

t'es un genie

Pas de soucis

Tu peux mettre un + 1 si tu veux à mon dernier post (en bas à droite)

1

RE !

J'ai un MAXI problème,

J'ai partagé mon tableau sur excel Online, et depuis, lorsque je clique sur mon bouton VBA Imports, les dates s'importent au format MM/JJ/AAA au lieu de JJ/MM/AAA ?

J'ai cherché partout tout est configuré en Français, je ne comprends pas pourquoi je pete un plomb

HELP PLEASE

Rechercher des sujets similaires à "inserer donnees tableau suivi partir formulaire vba"