Exporter des info dans des fichier Excel fermer

bonjours

je cherche a réaliser une commande pour remplir des saisies d'heures plus rapidement depuis un classeur excel vers d'autre classeur fermer

étant novice en excel j'ai déjà pu réaliser quelque commande mais cela dépasse mes compétence je recherche un challenger pouvant m'aider a réaliser cette commande

je joint deux fichier

le premier pour la saisie des heures "FEUILLE D'HEURE" avec une image avec plus d'info sur le fonctionnement

le second l'un des classeur qui va réceptionner les info

Bonjour,

Pour être franc, les fichiers proposés sont un peu ... indigestes.

Alors voici une démo simpliste pour écrire des données d'un fichier emeteur vers un fichier récepteur fermé sans l'ouvrir.

Le traitement est contenu dans le code suivant :

Sub Ecrire_vers_Classeur_Fermé()
Dim lg As Long, i As Long

    Connect_xls ThisWorkbook.Path & "\Recepteur.xlsx"
    With Sheets("Feuil1")
        lg = .Cells(Rows.Count, 1).End(xlUp).Row

        For i = 2 To lg
            Req = "INSERT INTO [Cible$] VALUES (" & _
                  Esc(.Range("A" & i).Value) & "," & _
                  Esc_date(.Range("B" & i).Value) & "," & _
                  Esc_num(.Range("C" & i).Value) & ")"

            Cnx.Execute Req
        Next i
    End With
    Close_Cnx
End Sub

Explications :

1/ pour commencer on se connecte au fichier récepteur (ici dans le même dossier que l'emeteur)

2/ on écrit pour chaque ligne de donnée une requête Sql type "INSERT"

3/ on l'exécute

4/ à la fin du processus on ferme la connexion.

Précisions sur la rédaction de la requête Sql :

  • INSERT INTO [Cible$] => indique qu'on souhaite insérer les données dans l'onglet "Cible" (le $ indique que c'est un onglet)
  • ensuite on place les valeurs à insérer dans la liste => VALUES(valeur1, valeur2, etc ...)
  • ici le nombre de valeurs doit correspondre au nombre de colonne de l'onglet cible
  • chaque type de valeur doit être formatée de façon particulière :
. une valeur texte doit être entourée de guillemets =>
'Valeur1'

. une valeur numérique doit voir son éventuelle virgule remplacée par un point => 123.45

. une date est transformée en valeur "Long Integer"

=> d’où les 3 fonctions de traitement pour valeurs texte/date/numérique contenues dans le code

Particularité pour un texte contenant déjà un guillemet, celui-ci doit être doublé :

exemple pour la valeur Armel le Cléac'h, la fonction esc la transforme en 'Armel le Cléac''h'

Mais si je veux insérer, par exemple, uniquement qu'une seule valeur dans une nouvelle ligne => on devra spécifier la colonne dans la requête, exemple pour insérer uniquement une date :

Req = "INSERT INTO [Cible$] (`Date`) VALUES (" & Esc_date(.Range("B" & i).Value) & ","

Remarques :

. l'entête Date est un mot clé du VBA il convient de l'entourer de guillemets-du-7 (Alt_Gr+7 2 fois)

. mais c'est une "bonne pratique" également pour tous les noms de colonnes (surtout si composé de plusieurs mot du genre `Total débit mensuel` par exemple).

Il ne reste plus qu'à adapter ce code pour le besoin indiqué.

Pierre

Rechercher des sujets similaires à "exporter info fichier fermer"