VBA 32 bits / 64 Bits

Bonjour , j'ai un soucis sur l’exécution d'une macro avec des postes équipé de 64 Bits.

j'ai récupéré une macro sur un fichier développé par un ancien collaborateur , elle m'ouvre l'explorateur de fichier afin de me connecter à des fichiers Access.

je l'ai simplement modifiée afin qu'elle récupére les infos dans le bon onglet .

Elle fonctionne parfaitement sur mon poste équipé d'office 365 en 32 bits , et sur le seul autre poste de notre flotte également en 32 bits .

Lors de l'exécution sur des postes en 64 Bits , j'ai un soucis sur : .Refresh BackgroundQuery:=False

je tiens à préciser que je " bidouille " mais ne suis en aucuns cas capable d'analyser ce genre de probleme .

Voila 2 jours que je fais des recherches sur ce " .Refresh BackgroundQuery:=False " mais ne trouve rien qui pourrais m'aiguiller vu mon peu de connaissance en VBA .

C'est pourquoi j'en appel à vous .

Merci d'avance à ceux qui voudront bien prendre un peu de temps pour m'orienter ou corriger ce problème .

Merci d'avance

CDLT

Ci dessous la macro :

Dim DOSSIER_MDB As String

Sub Import()

Sheets("IMPORT").Select
Cells.Select
    Range("O1").Activate
    Selection.Clear

Application.ScreenUpdating = False
Dim Confirmation As Boolean
'Ouverture Dialogue Dossier
Confirmation = Application.FileDialog(msoFileDialogFolderPicker).Show
If Confirmation <> False Then
    DOSSIER_MDB = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
    ThisWorkbook.Worksheets("IMPORT").Activate
    ThisWorkbook.Worksheets("IMPORT").Range("A2:AA10000").ClearContents

    'Scanner Fichiers
    Call TestListFilesInFolder

    Call Nettoyage

End If

End Sub
'__________________________________________________________________________________
Sub TestListFilesInFolder() 'LANCEMENT CHOIX DU REPERTOIRE
Dim RootFolder$
' dossier à scanner
RootFolder = DOSSIER_MDB
  If RootFolder = "" Then Exit Sub
  ListFilesInFolder RootFolder, True
End Sub
'__________________________________________________________________________________
Sub ListFilesInFolder(SourceFolderName As String, IncludeSubfolders As Boolean) 'RECHERCHE DES FICHIERS
Dim CHEMIN_THEME_MDB As String
Dim LIGNE_IMPORT As Integer

Dim fso 'As Scripting.FileSystemObject
Dim SourceFolder 'As Scripting.Folder
Dim SubFolder 'As Scripting.Folder
Dim FileItem 'As Scripting.File
Dim r As Long
Set fso = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = fso.GetFolder(SourceFolderName)
  For Each FileItem In SourceFolder.Files
    Dim NOM_FICHIER As String
    NOM_FICHIER = FileItem.Name
    If Right(NOM_FICHIER, 3) = "mdb" Or Right(NOM_FICHIER, 3) = "MDB" Then
        'Vérifie si le fichier est ouvert
        If VerifOuvertureClasseur(FileItem.ParentFolder & "\" & FileItem.Name) Then
        Else
            LIGNE_IMPORT = Cells(Rows.Count, 1).End(xlUp).Row + 1

            CHEMIN_THEME_MDB = FileItem.ParentFolder & "\" & FileItem.Name
            'Importation de ETEQUIP
            ThisWorkbook.Worksheets("IMPORT").Select
            With Sheets("IMPORT").QueryTables.Add(Connection:=Array("OLEDB;Provider=Microsoft.jet.OLEDB.4.0;" & "Data source=" & CHEMIN_THEME_MDB), Destination:=Sheets("IMPORT").Cells(LIGNE_IMPORT, 1))
                    .CommandType = xlCmdTable
                    .CommandText = Array("ObsGPS")
                    .Name = FileItem.Name
                    .FieldNames = False
                    .RowNumbers = False
                    .PreserveFormatting = True
                    .BackgroundQuery = True
                    .RefreshStyle = xlInsertDeleteCells
                    .AdjustColumnWidth = True
                    .PreserveColumnInfo = False
                    .Refresh BackgroundQuery:=False
            End With
            Worksheets("IMPORT").Cells.Select
            Selection.QueryTable.Delete
        End If
    End If
  Next FileItem
  Set FileItem = Nothing
  Set SourceFolder = Nothing
  Set fso = Nothing
End Sub
'__________________________________________________________________________________
Function VerifOuvertureClasseur(Fichier As String) As Boolean 'FONCTION VERIFICATION SI CLASSEUR OUVERT
    Dim X As Integer
    On Error Resume Next
    X = FreeFile()
    Open Fichier For Input Lock Read As #X
    Close X
    If Err.Number = 0 Then VerifOuvertureClasseur = False
    If Err.Number = 70 Then VerifOuvertureClasseur = True
    On Error GoTo 0
End Function

Bonsoir,

avez-vous regardez du coté de la déclaration de fonction avec le PTRSAFE ?

Je dis ça car il n'y a aucune indication de votre message d'erreur...

@ bientôt

LouReeD

Bonjour tout le monde,

1- si vous changer le False en True

.Refresh BackgroundQuery:=True

quel est le résultat?

2- si vous n'utilisez que

.Refresh

à la place de

.Refresh BackgroundQuery:=False

quel est le résultat?

à vous relire

Bonjour , merci pour vos aiguillages ,

m3ellem1 :

J'ai essayé de remplacer "False" par "True" mais la ligne se met en erreur .

J'ai essayé ".refrech" tout court , mais même résultat .

LouReeD :

Désolé mais comme évoqué dans mon poste , je " bidouille " en vba ,

donc je suis navré de ne pas comprendre " déclaration de fonction avec le PTRSAFE "

Merci a vous

CDLT

Rechercher des sujets similaires à "vba bits"