Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/12/2010, 19h48   #1
Invité de passage
 
Inscription : juillet 2008
Messages : 23
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 23
Points : 1
Points : 1
Par défaut Recherche de doublons avec VBA

Bonsoir à tous,

Je suis débutant, j'ai une table de plus de 7 millions d'enregistrements, je souhaiterais savoir s'il était possible avec vba de rechercher les doublons car avec Access directement, j'ai le message que la mémoire est insuffisante. J'ai T5250 avec 2Go de RAM.

Est-il possible de contourner ce problème avec vba Access? Si oui comment?

Ma Table s'appelle évaluation et la variable score.

Merci d'avance pour vos réponses.

Dokko
Dokko974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 10h44   #2
Membre émérite
 
Avatar de azertix
 
Homme Lanza Bertucci-Domergue
Développeur informatique
Inscription : juin 2007
Messages : 937
Détails du profil
Informations personnelles :
Nom : Homme Lanza Bertucci-Domergue
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juin 2007
Messages : 937
Points : 995
Points : 995
FAQ : http://access.developpez.com/faq/?page=SQL#Supprdblons
__________________
Si ma réponse vous a été utile pensez à voter Pour

Avant de poster sur le forum Access :
FAQ > SOURCES > COURS > FORUM > GOOGLE
Pas de question par MP ou je mords

azertix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 13h40   #3
Membre Expert
 
Avatar de stigma
 
Homme Alain
Développeur informatique
Inscription : octobre 2003
Messages : 846
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 61
Localisation : France, Oise (Picardie)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : octobre 2003
Messages : 846
Points : 1 053
Points : 1 053
Envoyer un message via MSN à stigma
Je te livre tel quel mon code pour rechercher des bobines de feuillard enregistrées en double.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub doublons_Click()
    '-------------  chercher les doublons de saisie
    Dim l_Dbl As Long
    Set rst = db.OpenRecordset("Inventaires")
    With rst
        .MoveFirst
        Do Until .EOF
            If .Fields("InventaireFour") = True Then l_Dbl = l_Dbl + 1
            If .Fields("InventaireAffutage") = True Then l_Dbl = l_Dbl + 1
            If .Fields("InventaireCuisson") = True Then l_Dbl = l_Dbl + 1
            If .Fields("InventaireDecoupe") = True Then l_Dbl = l_Dbl + 1
            If .Fields("InventaireInspection") = True Then l_Dbl = l_Dbl + 1
            If .Fields("InventaireControle") = True Then l_Dbl = l_Dbl + 1
            If l_Dbl > 1 Then
                MsgBox "La bobine " & .Fields("InventaireNumBic") & "" _
                & " est cochée " & l_Dbl & " fois !", vbCritical, "DOUBLON"
            End If
            l_Dbl = 0
            .MoveNext
        Loop
        .Close
    End With
    MsgBox "Vérification terminée", vbInformation, "FIN"
End Sub
PS :C'est en DAO
__________________
Je ne suis pas une adresse IP, je suis un homme libre !
stigma est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 17h11   #4
Invité de passage
 
Inscription : juillet 2008
Messages : 23
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 23
Points : 1
Points : 1
Bonsoir à tous,

Tout d'abords je vous remercie pour vos précieuses réponses.

Je vous présente ci-dessous ce que j'ai écris dans mon programme :

Code :
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
Option Compare Database
 
Sub CreerTblDoublons()
Dim db As Database, r As DAO.Recordset, strSQL As String
Dim rDoublons As DAO.Recordset
Dim strCKey As String, strPKey As String
Dim strTable As String, strTblDoublons As String
 
strTable = "TableCombinaison7a"
strTblDoublons = strTable & "_Doublons"
DoCmd.SetWarnings False
DoCmd.RunSQL "SELECT  first(combi) as combino, count(combi) INTO [" & strTblDoublons & "] FROM [" & strTable & "] group by combi HAVING (((Count(TableCombinaison7a.Combi))>1))"
 
 
DoCmd.SetWarnings True
 
Set db = CurrentDb
 
Set rDoublons = db.OpenRecordset(strTblDoublons)
 
 
rDoublons.Close
 
db.Close
End Sub

Le prog fonctionne si ma table contient 5 millions d'enregistrements. Mais avec la table dont j'ai besoin qui contient environ 23 millions d'enregistrements j'ai le message suivant :"Espace insuffisant sur le disque temporaire"


Je rappel que j'ai vista32 et access 2003, comment faire pour résoudre ce problème de mémoire?
Dokko974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 09h26   #5
Membre émérite
 
Avatar de azertix
 
Homme Lanza Bertucci-Domergue
Développeur informatique
Inscription : juin 2007
Messages : 937
Détails du profil
Informations personnelles :
Nom : Homme Lanza Bertucci-Domergue
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juin 2007
Messages : 937
Points : 995
Points : 995
Wouach !
Mais elle fait quelle taille ta base ?
Je crains qu'Access ne convienne pas pour une telle quantité de données
__________________
Si ma réponse vous a été utile pensez à voter Pour

Avant de poster sur le forum Access :
FAQ > SOURCES > COURS > FORUM > GOOGLE
Pas de question par MP ou je mords

azertix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 14h00   #6
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonjour,

Les fichiers bases de données Access sont limités à 2Go.

C'est vrai aussi pour le fichier temporaire créé par le moteur de base de données Jet (JetXXXX.tmp).
Si ce fichier atteint 2Go on obtient le message d'erreur que tu as eu.

Si ta base de données n'est pas trop grosse (pas trop proche de 2Go), essaie de créer un index avec doublons sur le champ combi.
J'ai eu un problème similaire récemment et cela m'a aidé car le fichier JetXXXX.tmp est resté en dessous de 2Go.

Quelle taille fait ton fichier de base de données, une fois compacté ?

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 18h23   #7
Invité de passage
 
Inscription : juillet 2008
Messages : 23
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 23
Points : 1
Points : 1
Bonsoir à tous,

Merci pour vos réponses, la taille de ma base compactée est de 1,35Go.

Effectivement, le fichier jetxxx.tmp atteint rapidement 2Go.

LedZeppII, peux tu m'expliquer un peu plus quand tu dis "essaie de créer un index avec doublons sur le champ combi" s'il te plait?
Dokko974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2010, 10h57   #8
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonjour,

Pour créer un index, ouvres ta table en mode création.
Cliques sur le champ combi.
Dans les propriétés, en face de «indexé», sélectionner Oui avec doublons.
Cliquer sur le bouton «sauvegarder» (cela peut prendre du temps vu le nombre d'enregistrements).

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2010, 16h40   #9
Invité de passage
 
Inscription : juillet 2008
Messages : 23
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 23
Points : 1
Points : 1
Merci beaucoup à tous pour vos précieuses réponses, je testerais la dernière méthode de LedZeppII après noël, mais en attendant, JOYEUX NOËL à tous
Dokko974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 21h00   #10
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 458
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 458
Points : 7 534
Points : 7 534
Vu ta quantité de données je suggérerai de faire le travail de recherche de doublon sur le serveur source.

C'est quoi qui t'alimente ? Oracle, MS-SQL Server ?

Peux-tu altérer la source ?

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h51.


 
 
 
 
Partenaires

Hébergement Web