IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Transfert de données Excel vers Access


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    EMPLOYER
    Inscrit en
    Août 2016
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : EMPLOYER
    Secteur : Alimentation

    Informations forums :
    Inscription : Août 2016
    Messages : 107
    Points : 41
    Points
    41
    Par défaut Transfert de données Excel vers Access
    Bonjour
    mon planning:
    Nom : Capture d'écran 2024-08-24 093111.png
Affichages : 185
Taille : 63,4 Ko
    je souhaite stocker des données de mon planning dans Access avec ce bout de code
    je ne parvient pas a faire des boucles correct merci pour votre aide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    Sub LierCellulesAccess()
     
        ' Déclaration des variables
        Dim cn As Object
        Dim rs As Object
        Dim strConnexion As String
        Dim strSQL As String
        Dim ws As Worksheet
        Dim cellule1 As Range, cellule2 As Range, cellule3 As Range, cellule4 As Range, cellule5 As Range, cellule6 As Range, cellule7 As Range, cellule8 As Range, cellule9 As Range
        Dim i As Integer ' Compteur pour les répétitions
        Dim j As Integer ' Compteur pour le nombre total de lignes traitées
     
        ' Définir la feuille de calcul
        Set ws = ThisWorkbook.Sheets("Planning annuel") 
     
        ' Définir les cellules que vous souhaitez lier
        Set cellule1 = ws.Range("V4")
        Set cellule2 = ws.Range("V1")
        Set cellule3 = ws.Range("V2")
        Set cellule4 = ws.Range("V4")
        Set cellule5 = ws.Range("B8")
        Set cellule6 = ws.Range("B10")
        Set cellule7 = ws.Range("B8")
        Set cellule8 = ws.Range("C10")
        Set cellule9 = ws.Range("A10")
     
     
        strConnexion = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                       "Data Source=C:\Users\xxxxxxxxxxxxxx\Documents\gestion-rendezvous\Gestion.accdb" 
     
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open strConnexion
     
     
        Set rs = CreateObject("ADODB.Recordset")
     
     
        strSQL = "SELECT * FROM T_RendezVous" ' Modifiez en fonction de votre table
     
        rs.Open strSQL, cn, adOpenStatic, adLockOptimistic ' Ouverture du recordset pour pouvoir ajouter des enregistrements
     
     
        i = 0
        j = 0
     
        ' Boucle pour ajouter des enregistrements jusqu'à 1003 lignes traitées
        Do While j < 1003
     
     
            rs.AddNew
            On Error Resume Next
            ' Remplissage des champs de la base de données avec les valeurs des cellules
            rs.Fields("Objet").Value = cellule1.Value
            rs.Fields("Emplacement").Value = cellule2.Value
            rs.Fields("Note").Value = cellule3.Value
            rs.Fields("Categorie").Value = cellule4.Value
            rs.Fields("DateDebut").Value = cellule5.Value
            rs.Fields("HeureDebut").Value = cellule6.Value
            rs.Fields("DateFin").Value = cellule7.Value
            rs.Fields("HeureFin").Value = cellule8.Value
            rs.Fields("IdCalendrierOutlook").Value = cellule9.Value
     
     
            rs.Update
     
            ' Déplacement des cellules de manière cyclique
            i = i + 1
            j = j + 1
     
            If i Mod 7 = 0 Then
     
                Set cellule1 = cellule1 ' Reste fixe
                Set cellule2 = cellule2 ' Reste fixe
                Set cellule3 = cellule3 ' Reste fixe
                Set cellule4 = cellule4 ' Reste fixe
                Set cellule5 = cellule5.Offset(0, -6)
                Set cellule6 = cellule6.Offset(0, -11)
                Set cellule7 = cellule7.Offset(0, -6)
                Set cellule8 = cellule8.Offset(0, -11)
                Set cellule9 = cellule9 ' Reste fixe
            Else
     
                Set cellule1 = cellule1 ' Reste fixe
                Set cellule2 = cellule2 ' Reste fixe
                Set cellule3 = cellule3 ' Reste fixe
                Set cellule4 = cellule4 ' Reste fixe
                Set cellule5 = cellule5.Offset(0, 1)
                Set cellule6 = cellule6.Offset(0, 2)
                Set cellule7 = cellule7.Offset(0, 1)
                Set cellule8 = cellule8.Offset(0, 2)
                Set cellule9 = cellule9 ' Reste fixe
            End If
     
            ' Passer à la ligne suivante toutes les 15 lignes et sauter 5 lignes
            If j Mod 15 = 0 Then
                Set cellule1 = cellule1.Offset(20, 0) ' Sauter 5 lignes après 15 lignes (donc 20 lignes au total)
                Set cellule2 = cellule2.Offset(20, 0)
                Set cellule3 = cellule3.Offset(20, 0)
                Set cellule4 = cellule4.Offset(20, 0)
                Set cellule5 = cellule5.Offset(20, -i + 1) ' Revenir à la première colonne et sauter 5 lignes
                Set cellule6 = cellule6.Offset(20, -2 * (i - 1))
                Set cellule7 = cellule7.Offset(20, -i + 1)
                Set cellule8 = cellule8.Offset(20, -2 * (i - 1))
                Set cellule9 = cellule9.Offset(20, 0)
                i = 0
            End If
     
        Loop
     
     
        rs.Close
        cn.Close
        Set rs = Nothing
        Set cn = Nothing
     
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 279
    Points : 5 670
    Points
    5 670
    Par défaut
    Bonjour,

    Personnellement avant d'envoyer les données dans Access, je commencerais par remplir une feuille Excel avec les données telles que je voudrais les voir dans la table Access. Cela me permettrait de bien voir ce qui sera envoyé avant de le faire effectivement.

    Deux points qui peuvent poser problème:
    - les prestations de nuit: les heures de fin qui se produisent en réalité le jour suivant (date début + 1)
    - les "repos" qui ne sont pas des nombres, à laisser vide pour Access ?

    Nom : Plan202301b.png
Affichages : 152
Taille : 15,2 Ko

    Cordialement.

  3. #3
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 532
    Points : 16 476
    Points
    16 476
    Par défaut
    Bonjour

    Pour ma part je
    • restructurerais le planning via une requête PowerQuery
    • dans la base Access :
      • créerai un lien vers le classeur
      • créerai une requête d'ajout de cette table vers la table destinataire.


    Ainsi il suffit de d'actualiser la Requête dans le classeur Excel puis la requête ajout dans Access

  4. #4
    Membre du Club
    Homme Profil pro
    EMPLOYER
    Inscrit en
    Août 2016
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : EMPLOYER
    Secteur : Alimentation

    Informations forums :
    Inscription : Août 2016
    Messages : 107
    Points : 41
    Points
    41
    Par défaut
    Merci a vous deux pour votre intérêt
    Pas d'inquiétude pour les horaires c'est des données brutes que j'ai rentrée pour la forme.
    Et pour les données au format texte si vous avez une solution je suis preneur.
    Pour powerquery je ne connais pas du tout l'outil
    Si vous avez une démo qui peut me servir de support pédagogique.
    Merci d'avance
    Bien cordialement

  5. #5
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 532
    Points : 16 476
    Points
    16 476
    Par défaut
    RE
    Citation Envoyé par samchich Voir le message
    Pour powerquery je ne connais pas du tout l'outil
    Si vous avez une démo qui peut me servir de support pédagogique.
    Avec une image on ne peut modéliser.

    Joins un fichier représentatif... et précise la structure de la table Access

  6. #6
    Membre du Club
    Homme Profil pro
    EMPLOYER
    Inscrit en
    Août 2016
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : EMPLOYER
    Secteur : Alimentation

    Informations forums :
    Inscription : Août 2016
    Messages : 107
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par 78chris Voir le message
    RE


    Avec une image on ne peut modéliser.

    Joins un fichier représentatif... et précise la structure de la table Access
    Bonjour
    Voici le fichier
    Fichiers attachés Fichiers attachés

  7. #7
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 532
    Points : 16 476
    Points
    16 476
    Par défaut
    Bonjour

    Ta base contient a priori les Champs Objet, Emplacement, Note, Catégorie, DateDebut, HeureDebut, DateFin, HeureFin et IdcalendarOutlook mais les cellule V1 à V4 étant vide on n'a pas les valeurs des 5 premiers champs

    Par ailleurs tu n'as pas répondu sur ce qu'on fait des absences : on les oublie ?

  8. #8
    Membre du Club
    Homme Profil pro
    EMPLOYER
    Inscrit en
    Août 2016
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : EMPLOYER
    Secteur : Alimentation

    Informations forums :
    Inscription : Août 2016
    Messages : 107
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par 78chris Voir le message
    Bonjour

    Ta base contient a priori les Champs Objet, Emplacement, Note, Catégorie, DateDebut, HeureDebut, DateFin, HeureFin et IdcalendarOutlook mais les cellule V1 à V4 étant vide on n'a pas les valeurs des 5 premiers champs

    Par ailleurs tu n'as pas répondu sur ce qu'on fait des absences : on les oublie ?
    Bonjour
    oui a terme je veux créer des rdv Outlook après avoir stocké les données dans Access.
    les cellule V1 à V4 doivent contenir des lignes internet.
    les absences doivent être enregistrer comme texte dans Access.

  9. #9
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 532
    Points : 16 476
    Points
    16 476
    Par défaut
    RE
    Citation Envoyé par samchich Voir le message
    Bonjour
    oui a terme je veux créer des rdv Outlook après avoir stocké les données dans Access.
    les cellule V1 à V4 doivent contenir des lignes internet.
    les absences doivent être enregistrer comme texte dans Access.
    Dans une base Access, comme dans toute base de données, les champs sont typés donc mélanger des heures et des textes dans un même champ est normalement impossible...

    Cela fait beaucoup d'élément manquants ou contradictoires pour sérieusement modéliser...

  10. #10
    Membre du Club
    Homme Profil pro
    EMPLOYER
    Inscrit en
    Août 2016
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : EMPLOYER
    Secteur : Alimentation

    Informations forums :
    Inscription : Août 2016
    Messages : 107
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par 78chris Voir le message
    RE

    Dans une base Access, comme dans toute base de données, les champs sont typés donc mélanger des heures et des textes dans un même champ est normalement impossible...

    Cela fait beaucoup d'élément manquants ou contradictoires pour sérieusement modéliser...




    Si on laissé vide les cas ou il y a du texte?

Discussions similaires

  1. [AC-2010] Transfert d'Hyperliens - Excel vers Access
    Par snely_al dans le forum IHM
    Réponses: 1
    Dernier message: 21/11/2019, 19h38
  2. [XL-2007] Transfert de données Excel vers access création de Doublons
    Par soumilo dans le forum Excel
    Réponses: 2
    Dernier message: 16/07/2012, 13h12
  3. Transfert de données EXCEL Vers Access
    Par Mon_ami dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 29/12/2010, 19h57
  4. Transfert de données excel vers access
    Par Isabelle27 dans le forum Access
    Réponses: 3
    Dernier message: 22/03/2007, 08h11
  5. transfert d'Excel vers Access
    Par blynda dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/05/2006, 16h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo