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 :

Macro/ verification de donnees/Erreur 1004 [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 20
    Par défaut Macro/ verification de donnees/Erreur 1004
    Bonjour a tous,

    Je viens solliciter votre aide car j'ai un problème sous vba que je n'arrive pas a résoudre malgré mes recherches sur internet et ce forum. :

    Voila ce que je souhaite faire :
    -J'ai 2 fichiers excel : je cherche a vérifier l’intégrité et la cohérence des donnes du premier fichier par rapport au 2 eme qui me sert de référence.
    -1er fichier :fichier a traiter
    -2e fichier:fichier de reference

    Pour cela je souhaite parcourir chaque cellule de la colonne G du 1er (ligne i) et chercher le même contenu dans le 2e fichier (ligne j). Ensuite vérifier que le contenu de E(i) = E(j) et N(i)=N(j), si la reponse est non colorier la ligne i et j de la même couleur et incrémenter une balise pour compter le nombre d'erreur et l'afficher par la suite.

    Le but étant de vérifier que durant la manipulation sur le fichier 2, aucune donne n'est été intervertit par mégarde etc...

    J'ai une erreur sur la ligne
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    While Workbooks(Nom1).Worksheet("Master Extraction").Range("G" & i).Value <> Workbooks(Nom2).Worksheet("Master Extraction").Range("G" & j).Value
    qui me renvoie une erreur 438 : propriété ou méthode non gérée par cet objet.

    Voici mon code vba :
    Code vb : 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
    Private Sub IdentifieProbleme_Click()
    Dim Nom1 As String
    Dim Nom2 As String
    Dim i As Integer
    Dim max1 As Integer
    Dim max2 As Integer
    'j'ouvre les deux classeur
     
    Nom1 = ThisWorkbook.Name 'Fichier1.xls
     
    Call Ouvre
    Nom2 = ActiveWorkbook.Name ' fichier2.xls
    Windows(Nom1).Activate
     
    max1 = Range("E65536").End(xlUp).Row
     
    Windows(Nom2).Activate
     
    max2 = Range("E65536").End(xlUp).Row
     
    For i = 2 To max1
     
    j = 2
    While Workbooks(Nom1).Worksheet("Master Extraction").Range("G" & i).Value <> Workbooks(Nom2).Worksheet("Master Extraction").Range("G" & j).Value
    j = j + 1
    Wend
    If Workbooks(Nom1).Worksheet("Master Extraction").Range("E" & i).Value <> Workbooks(Nom2).Worksheet("Master Extraction").Range("E" & j).Value & Workbooks(Nom1).Worksheet("Master Extraction").Range("N" & i).Value <> Workbooks(Nom2).Worksheet("Master Extraction").Range("N" & j).Value Then
    Workbooks(Nom1).Worksheet("Master Extraction").Range("E" & i).EntireRow.Font.Color = i
    Workbooks(Nom2).Worksheet("Master Extraction").Range("E" & j).EntireRow.Font.Color = i
    probleme = probleme + 1
    End If
     
    Next i
    If probleme > 0 Then MsgBox "Il y a " & probleme & " erreurs", vbCritical
    End Sub

    Fonction ouvre :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function Ouvre()
    Dim wbMyWb As Workbook
    Dim Nom_Fichier As Variant
     
    Nom_Fichier = Application.GetOpenFilename("Fichiers Excel (*.xls), *.xls")
    If Nom_Fichier <> False Then
       Set wbMyWb = Workbooks.Open(Nom_Fichier)
      wbMyWb.Activate
    End If
     
    End Function

    Merci d'avance de m’éclairer de vos lumières

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Décidamment les S des worksheets vous ne les aimez pas..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While Workbooks(Nom1).Worksheet("Master Extraction").Range("G" & i).Value <> Workbooks(Nom2).Worksheet("Master Extraction").Range("G" & j).Value
    devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While Workbooks(Nom1).Worksheets("Master Extraction").Range("G" & i).Value <> Workbooks(Nom2).Worksheets("Master Extraction").Range("G" & j).Value
    Et je suppose que pas besoin de te dire de mettre les S partout

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 20
    Par défaut
    Salut !

    Merci pour ta réponse

    J'ai bien appliqué toutes les modifications sur les "Worksheets" mais le message suivant apparaît toujours...

    erreur 438 : propriété ou méthode non gérée par cet objet sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While Workbooks(Nom1).Worksheets("Master Extraction").Range("G" & i).Value <> Workbooks(Nom2).Worksheetss("Master Extraction").Range("G" & j).Value

    Je pense qu'il y a plus simple que cette syntaxe mais je débute...

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    C'est plus simple si tu mets quun S à Worksheets.

    N'empêche je n'ai jamais essayé d'en mettre cinq, attends je tente :p Worksheetsssss: oula cet abruti de compilateur ne connaît pas la propriété Worksheetsssss...

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 20
    Par défaut
    J'ai honte... lol

    Bon j'ai plus d'erreur cette fois !

    En revanche ma macro ne marche toujours pas. J'essaie de passer en mode pas a pas pour "investiguer" mais passé la ligne "Call Ouvre", toute la macro est jouée.

    Qu'est ce qu'il fait dans mon code que le mode pas a pas "s'emballe" ?

    Merci

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Que tu calles une fonction

    On ne call pas une fonction on la l'appelle en faisant x = ouvre() par exemple.

    Tu ne lui passes aucun argument elle ne te renvoit rien.. Pourquoi fais tu une fonction ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function Ouvre()
    Dim wbMyWb As Workbook
    Dim Nom_Fichier As Variant
     
    Nom_Fichier = Application.GetOpenFilename("Fichiers Excel (*.xls), *.xls")
    If Nom_Fichier <> False Then
       Set wbMyWb = Workbooks.Open(Nom_Fichier)
      wbMyWb.Activate
    End If
     
    End Function
    Devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Ouvre()
    Dim wbMyWb As Workbook
    Dim Nom_Fichier As Variant
     
    Nom_Fichier = Application.GetOpenFilename("Fichiers Excel (*.xls), *.xls")
    If Nom_Fichier <> False Then
       Set wbMyWb = Workbooks.Open(Nom_Fichier)
      wbMyWb.Activate
    End If
     
    End Sub

  7. #7
    Membre éclairé Avatar de pastis.vi
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2008
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 251
    Par défaut
    Bonjour Geoffray,

    Pour éviter que tout tourne tout seul, tu fais F8 et tu pose un point d'arret au début de ta macro Ouvre

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

Discussions similaires

  1. [XL-2010] Macro sur feuille protégée. Erreur 1004
    Par sas99 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/02/2015, 22h09
  2. [XL-2007] Macro sur plusieurs onglets: erreur 1004
    Par beniboy dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/12/2012, 14h40
  3. [XL-2007] Erreur 1004 lors de la création de TCD avec l'enregistreur de macro
    Par ryobanga dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/02/2010, 15h35
  4. [XL-2002] Erreur 1004 avec pastespecial sur macro très simple
    Par arou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/06/2009, 11h00
  5. erreur 1004 macro excel
    Par lerab51 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/05/2007, 21h27

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