Mini utilitaire de saisie en VBA

Bonjour à tous,

Pour construire un prototype de saisie destiné à un usage limité, voici une petite procédure qui peut rendre de grands services. Cet exemple ne permet que la saisie, mais pas la modification ou la suppression de données.

Cet exemple sert à démontrer l'utilisation de certaines fonctionnalités du VBA en interaction avec Excel.

On notera :

  • Utilisation d'une variable pour identifier la nouvelle ligne à saisir.
  • Utilisation de noms de plages définis dans Excel pour rendre l'application robuste. Par exemple, l'ajout, la suppression, la modification ou le déplacement de lignes ou de colonnes est possible dans une large mesure. A l'inverse, si vous aviez utilisé des références statiques du style Range("D2"), celles-ci ne sont pas du tout robustes en VBA-Excel.

Voici une petite vidéo qui démontre la construction du fichier :

On peut aller une étape plus loin en créant une boucle qui va parcourir toutes les colonnes. Dans le fichier joint (mais pas dans la vidéo), j'ai aussi géré le fait de mettre la table de données dans une autre feuille :

De plus, en transformant la plage en tableau, l'ajout des lignes étend automatiquement le tableau vers le bas.

Pour ajouter un nouveau champ, il faut simplement définir deux noms et modifier le code VBA en ajoutant le nom du champ dans l'array:

  • Saisie_NomNouveauChamp
  • Col_ NomNouveauChamp
  • arrColonnes = Array("Nom", "Prenom", "Ville", "CodePostal", " NomNouveauChamp")

Bonne continuation.

Excel VBA – Rapatrier les informations d’un fichier (chemin/emplacement et nom)

Bonjour à tous,

Voici une amélioration d'un ancien post.

Le but est de rapatrier les informations d'un fichier que l'on sélectionne via une boîte de dialogue.

Cliquez ici pour télécharger le fichier Excel.

Ce code est ensuite très pratique pour pouvoir ensuite effectuer des traitements sur un fichier sélectionné.

Voici le code :

Option Explicit
Sub choix_CheminEtFichiers()
'Cette macro permet de mettre dans la plage nommee les informations du fichier selectionne
    'note : on aurait pu tout faire en une seule fois sans variables, mais en ayant
    'des variables, cela permet de facilement continuer le code par la suite.
    Dim strFichier As String
    Dim strChemin As String
    Dim strCheminEtFichier As String
    'on ouvre la boite de dialogue pour recuperer les informations du fichier selectionne
    With Application.FileDialog(msoFileDialogFilePicker)
        .Show
        On Error Resume Next
        strChemin = .SelectedItems.Parent.InitialFileName
        strCheminEtFichier = .SelectedItems.Item(1)
        'note : il existe de nombreuses autres solutions pour recuperer le nom du fichier
        strFichier = Right(strCheminEtFichier, Len(strCheminEtFichier) - InStrRev(strCheminEtFichier, "\"))
        On Error GoTo 0
    End With
    'on rapatrie les informations dans la feuille excel
    If strCheminEtFichier <> "" Then
        Range("Nom_du_Fichier").Value = strFichier
        Range("CheminFichier").Value = strChemin
        Range("Nom_et_Chemin_du_Fichier").Value = strCheminEtFichier
    End If
    'on ajuste la colonne contenant le resultat
    Columns(Range("Nom_du_Fichier").Column).EntireColumn.AutoFit
End Sub

Bonne continuation.

Gaetan Mourmant

Copier un fichier vers plusieurs répertoires

Dans le cadre du déploiement d'un fichier pour de multiples utilisateurs, il est parfois pratique de pouvoir copier celui-ci à plusieurs endroits pour que tout le monde ait une copie à jour. Évidemment, ca serait mieux si le fichier était directement multi-utilisateur, mais parfois on n'a pas le choix !

Voici donc un petit fichier qui automatise ce processus : CopierMultiplesFichiers.XLSM

L'essentiel du code est :


Sub CopierFichier()
Dim rgeCell As Range
For Each rgeCell In Range("TableauColEmplacementFinal")
FileCopy Range("CheminCompletFichierSource"), rgeCell.Value
Next
End Sub

On a aussi nommé les plages suivantes :

Et on utilise aussi quelques formules pour recréer le chemin complet de chaque fichier.
DROITE : retourne les caractères à droite de la plage
& : permet de concaténer, c'est-a-dire de combiner deux chaînes de caractères ensemble.

Vous pouvez aussi noter que j'utilise une colonne intermédiaire pour entrer manuellement des données, tout en conservant une formule identique à la colonne C.

En espérant que ce petit fichier puisse vous rendre pleins de services !

A bientôt.

Gaetan