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 :

Écrire dans Access depuis Excel - Access pas installé [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 55
    Par défaut Écrire dans Access depuis Excel - Access pas installé
    Bonjour,
    Je tourne en rond depuis une semaine pour résoudre un problème. Voici les résultats de tests que j'ai fais avec différents utilisateurs:

    Utilisateur 1 :
    -N'a pas MS Access installé sur son ordinateur.
    -Est capable d'écrire dans Access à l'aide de la macro dans Excel
    -Message "Excel has stopped working" à la fermeture du fichier Excel

    Utilisateur 2:
    -N'a pas MS Access installé sur son ordinateur.
    -N'est pas capable d'écrire dans Access à l'aide de la macro dans Excel
    -Message "Excel has stopped working" à la fermeture du fichier Excel

    Utilisateur 3:
    -Il a MS Access installé sur son ordinateur.
    -Est capable d'écrire dans Access à l'aide de la macro dans Excel
    -Message "Excel has stopped working" à la fermeture du fichier Excel

    Utilisateur 4 (moi):
    -J'ai MS Access installé sur son ordinateur.
    -Je suis capable d'écrire dans Access à l'aide de la macro dans Excel.
    -Je n'ai pas de message "Excel has stopped working" à la fermeture du fichier Excel

    Je ne pense pas que le message "Excel has stopped working" est lié au fait qu’une personne n’a pas MS Access parce que le message apparait pour l'utilisateur 3 (qui a bien MS Access). Pour le message "Excel has stopped working", j'ai essayé de supprimer toutes les feuilles sauf une (parce que Excel ne permet pas de toutes les supprimer), toutes les macros et toutes les références possibles dans l'éditeur de macro, mais le message "Excel has stopped working" est toujours là. Pourtant le message "Excel has stopped working" semble relié à ce fichier spécifique parce que ceux qui ont ce message, ne l'ont pas pour d'autres fichiers Excel. J'envisage de recopier toutes mes macros et tout le contenu de mes feuilles dans un autre fichier en espérant que ça règle le problème. Ce qui est plus problématique est l'impossibilité d'écriture dans MS Access. Certains sites suggéraient l'installation de ACEOLEDB.DLL pour faciliter le transfert des données d'un programme à l'autre. J'ai vérifié et l'utilisateur 2 l'a bien dans son ordinateur. Ce n'est donc pas à cause de ça que ça transfert pas. Qu'est-ce qui peut bien empêcher l'écriture dans Access pour l'utilisateur 2, alors que l'utilisateur 1 peut le faire et que tout deux n'ont pas Access installé sur leurs ordinateurs? Est-ce qu'il y a des réglages que je devrais verifier?

    Voici à titre d'information ma macro. Je ne crois pas qu'elle contient d'erreur puisqu'elle fonctionne pour plusieurs utilisateurs dont l'utilisateur 1 qui n'a pas MS Access installé sur son ordinateur.

    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
    Sub ADOTest()
    'exports data from the active worksheet to a table in an Access database
    Dim cn As ADODB.Connection, RS As ADODB.Recordset, r As Long
    Dim oRange As Range
    Dim JRange As Range
     
    Set JRange = ThisWorkbook.Worksheets("Départements").Range("M1")
     
     
    Application.ScreenUpdating = False
    Application.Calculation = xlManual
     
    Worksheets("Parametres").Select
     
    If Range("C70").Value = "Oui" Or Range("C70").Value = "" Then
     
        Compte = Application.WorksheetFunction.CountA(Range("B2:B50"))
     
        If Compte = 0 Then
     
            Set cn = New ADODB.Connection
            cn.Open "provider = microsoft.ace.oledb.12.0;" & _
            "Data Source=\\sharepoint.ca\Shared Documents\DataBase51.accdb;"
     
            'open a recordset
            Set RS = New ADODB.Recordset
     
     
            Table = "Table1"
     
     
            RS.Open Table, cn, adOpenKeyset, adLockOptimistic, adCmdTable
            'all records in a table
            r = 38 'the start row in the worksheet
     
            With RS
                Do
                    If RS.Fields("NoEmployé") = UserName Then
                        RS.Delete
                        RS.Update
                    End If
                    RS.MoveNext
                Loop Until RS.EOF
            End With
     
            ThisWorkbook.Activate
            Worksheets("TB OPÉRATIONNEL (global)").Select
     
     
     
     
            Range("E9").Select
            Do While ActiveCell.Offset(0, 1).Value <> ""
     
                If ActiveCell.Value <> "" Then
                    With RS
                    r = ActiveCell.Row
                    .AddNew 'create a new record
                    'add values to each field in the record
     
                    .Fields("NoEmployé") = UserName
                    .Fields("Quadrant") = Range("F" & r).Formula
                    .Fields("Indicateur") = Range("G" & r).Formula
                    .Fields("Cible") = Range("H" & r).Formula
                    .Fields("RendementPrécédent") = Range("J" & r).Formula
                    .Fields("AVR") = Range("L" & r).Formula
                    .Fields("MAI") = Range("N" & r).Formula
                    .Fields("JUIN") = Range("P" & r).Formula
                    .Fields("JUIL") = Range("R" & r).Formula
                    .Fields("AOUT") = Range("T" & r).Formula
                    .Fields("SEPT") = Range("V" & r).Formula
                    .Fields("OCT") = Range("X" & r).Formula
                    .Fields("NOV") = Range("Z" & r).Formula
                    .Fields("DEC") = Range("AB" & r).Formula
                    .Fields("JAN") = Range("AD" & r).Formula
                    .Fields("FÉV") = Range("AF" & r).Formula
                    .Fields("MARS") = Range("AH" & r).Formula
                    .Fields("YTD") = Range("AJ" & r).Formula
                    .Fields("Inclure") = Range("AL" & r).Formula
                    .Fields("TypeDonnées") = Range("H" & r).NumberFormat
                    .Fields("Com") = Range("AO" & r).Formula
                    'add more fields if necessary…
                    .Update 'stores the new record
                    End With
                End If
            ActiveCell.Offset(1, 0).Select
     
            Loop
     
     
            ThisWorkbook.Activate
     
     
            RS.Close
            Set RS = Nothing
            cn.Close
            Set cn = Nothing
        End If
    End If
     
    Application.ScreenUpdating = True
    Application.Calculation = xlAutomatic
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Retire ms les références ado de to projet!
    http://www.developpez.net/forums/d15...e/#post8415988

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim cn As Object, rs as Object
    Set cn =creatobject(" ADODB.Connection")
    Set RS AQ=creatobject("ADODB.Recordset")
    Dernière modification par Invité ; 13/11/2015 à 17h39.

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 55
    Par défaut
    Bonjour,
    Merci pour ces conseils. Je jure que je vais finir par l'apprendre.

    Malheureusement, il doit encore y avoir quelque chose qui m'échappe : j'ai testé avec mon utilisateur 2 et ça n'a pas fonctionné. Il semble bien y avoir une connexion qui se fait parce que le site de collaboration montre qu'il est le dernier utilisateur à avoir modifié la base de données Access, mais quand je l'ouvre, je constate que ses enregistrements n'ont pas enregistré. J'ai testé aussi avec mon ordinateur et comme d'habitude ça fonctionne parfaitement de mon côté.

    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
    Sub ADOTest()
    'exports data from the active worksheet to a table in an Access database
    Dim cn As Object, RS As Object, r As Long
    Dim oRange As Range
    Dim JRange As Range
     
    Set JRange = ThisWorkbook.Worksheets("Départements").Range("M1")
     
     
    Application.ScreenUpdating = False
    Application.Calculation = xlManual
     
    Worksheets("Parametres").Select
     
    If Range("C70").Value = "Oui" Or Range("C70").Value = "" Then
     
        Compte = Application.WorksheetFunction.CountA(Range("B2:B50"))
     
        If Compte = 0 Then
     
            Set cn = CreateObject("ADODB.Connection")
            cn.Open "provider = microsoft.ace.oledb.12.0;" & _
            "Data Source=\\sharepoint.ca\Shared Documents\DataBase51.accdb;"
     
            'open a recordset
            Set RS = CreateObject("ADODB.Recordset")
     
     
            Table = "Table1"
     
     
            RS.Open Table, cn, adOpenKeyset, adLockOptimistic, adCmdTable
            'all records in a table
            r = 38 'the start row in the worksheet
     
            With RS
                Do
                    If RS.Fields("NoEmployé") = UserName Then
                        RS.Delete
                        RS.Update
                    End If
                    RS.MoveNext
                Loop Until RS.EOF
            End With
     
            ThisWorkbook.Activate
            Worksheets("TB OPÉRATIONNEL (global)").Select
     
     
     
     
            Range("E9").Select
            Do While ActiveCell.Offset(0, 1).Value <> ""
     
                If ActiveCell.Value <> "" Then
                    With RS
                    r = ActiveCell.Row
                    .AddNew 'create a new record
                    'add values to each field in the record
     
                    .Fields("NoEmployé") = UserName
                    .Fields("Quadrant") = Range("F" & r).Formula
                    .Fields("Indicateur") = Range("G" & r).Formula
                    .Fields("Cible") = Range("H" & r).Formula
                    .Fields("RendementPrécédent") = Range("J" & r).Formula
                    .Fields("AVR") = Range("L" & r).Formula
                    .Fields("MAI") = Range("N" & r).Formula
                    .Fields("JUIN") = Range("P" & r).Formula
                    .Fields("JUIL") = Range("R" & r).Formula
                    .Fields("AOUT") = Range("T" & r).Formula
                    .Fields("SEPT") = Range("V" & r).Formula
                    .Fields("OCT") = Range("X" & r).Formula
                    .Fields("NOV") = Range("Z" & r).Formula
                    .Fields("DEC") = Range("AB" & r).Formula
                    .Fields("JAN") = Range("AD" & r).Formula
                    .Fields("FÉV") = Range("AF" & r).Formula
                    .Fields("MARS") = Range("AH" & r).Formula
                    .Fields("YTD") = Range("AJ" & r).Formula
                    .Fields("Inclure") = Range("AL" & r).Formula
                    .Fields("TypeDonnées") = Range("H" & r).NumberFormat
                    .Fields("Com") = Range("AO" & r).Formula
                    'add more fields if necessary…
                    .Update 'stores the new record
                    End With
                End If
            ActiveCell.Offset(1, 0).Select
     
            Loop
     
     
            ThisWorkbook.Activate
     
     
            RS.Close
            Set RS = Nothing
            cn.Close
            Set cn = Nothing
        End If
    End If
     
    Application.ScreenUpdating = True
    Application.Calculation = xlAutomatic
    End Sub
    ____________________
    Mes pensées sont avec le peuple français en ces jours difficiles.

  4. #4
    Invité
    Invité(e)
    Par défaut
    bonjour,

    j'imagine que tous les utilisateurs peuvent ce connecter en même temps! là il faut autoriser les connexion multiple.

    dans les option d'Access:
    Nom : Sans titre.png
Affichages : 1439
Taille : 63,3 Ko

    attention l'administrateur bloque en mode exclusif la base!

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 55
    Par défaut
    J'avais déjà "Mode partagé" (mode d'ouverture par défaut) coché et "Auncun" (verrouillage par défaut) coché, mais j'ai décoché "Ouvrir avec enregistrement verrouillé" pour voir si ça allait faire une différence. Toujours pas de succès. C'est un vrai mystère!

  6. #6
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       RS.Open SQL, Connexion, 1, 3
    les variables ado ne fonctionne pas avec CreateObject (adOpenKeyset, adLockOptimistic, adCmdTable)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2010] accès à Access depuis Excel: base pas approuvée
    Par Ragmaxone dans le forum Microsoft Office
    Réponses: 0
    Dernier message: 13/02/2014, 14h30
  2. [Toutes versions] Interroger access depuis Excel - Ne fonctionne pas sur tous les postes
    Par debdev dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 15/02/2012, 14h55
  3. Réponses: 1
    Dernier message: 08/10/2010, 16h38
  4. écrire dans plusieur feuille Excel depuis vba access
    Par bossLINDROS dans le forum VBA Access
    Réponses: 1
    Dernier message: 11/11/2008, 21h28
  5. Importer un fichier text dans Access depuis Excel
    Par alaingui dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/08/2008, 14h58

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