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 :

Crash après utilisation macro comparaison de fichier xls [XL-2013]


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
    Technicien maintenance
    Inscrit en
    Mai 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2019
    Messages : 14
    Par défaut Crash après utilisation macro comparaison de fichier xls
    Bonjour,

    J'ai fais une macro qui me permet de comparer 2 fichiers excel entre eux et d'en compléter un avec les informations du premier si elles sont manquantes dans le deuxième. Mais dès que je lance la macro excel plante et je suis obligé de les fermer en mode barbare et donc la macro ne fonctionne pas.


    Voici mon code :

    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
     
     
    Sub trixls()
     
     
    Dim i As Integer
    Dim j As Integer
    Dim c As Integer
     
     
    c = 0
    i = 4
    j = 5
     
    Workbooks.Open ("C:\Users\CMartinez\Desktop\test\Remise en forme AD.xlsm")
    Workbooks.Open ("C:\Users\CMartinez\Desktop\test\remise en forme matériel 01A.xlsm")
     
     
    While (Workbooks("remise en forme AD.xlsm").Sheets(1).Cells(i, 2).Value <> "")
     
     
     
        While (Workbooks("remise en forme matériel 01A.xlsm").Sheets(1).Cells(j, 15).Value <> "")
     
     
            If (Workbooks("remise en forme matériel 01A.xlsm").Sheets(1).Cells(j, 15).Value <> Workbooks("remise en forme AD.xlsm").Sheets(1).Cells(i, 2).Value) Then
     
                i = i + 1
     
                    If (Workbooks("remise en forme AD.xlsm").Sheets(1).Cells(i, 2).Value = "") Then
                        Workbooks("remise en forme AD.xlsm").Sheets(1).Cells(i, 2).Value = Workbooks("remise en forme matériel 01A.xlsm").Sheets(1).Cells(j, 15).Value
                        c = c + 1
     
                    Else
     
                        If (Workbooks("remise en forme AD.xlsm").Sheets(1).Cells(i, 2).Value = Workbooks("remise en forme matériel 01A.xlsm").Sheets(1).Cells(j, 15).Value) Then
     
                    j = j + 1
                    i = 4
     
                         End If
                     End If
     
             Else
     
                j = j + 1
            End If
     
        Wend
     
     
     
    Wend
     
     
    MsgBox c
     
     
    End Sub

    En vous remerciant par avance de votre aide !

  2. #2
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Par défaut
    Bonjour,

    Tu n'aurais pas créé une boucle infinie par hasard ?

    Tu as testé en mode pas à pas pour voir comme ta macro réagis face aux données que tu lui donnes ?

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2019
    Messages : 14
    Par défaut
    Merci pour ta réponse.

    En effet il semble que le programme ne passe jamais dans mon dernier else, je vais me pencher dessus !

  4. #4
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2019
    Messages : 14
    Par défaut
    Je me permets de re up le sujet car je me casse les dents depuis plusieurs heures sur mes boucles qui me permettent de comparer les 2 colonnes des 2 workbooks différent.

    J'ai réussie à lancer 1 fois la macro, mais elle a simplement recopier la colonne à la suite de l'autre sans tenir compte des doublons, j'ai d’ailler un problème avec ces doublons qui , je ne sais pas pourquoi, ne sont pas détecter en tant que doublon dans excel ( j'ai utilisé la commande mise en forme conditionnelle pour ça).

    si une personne à le temps et la patience de jeter un coup d'oeil à mon code pour m'indiquer ce qui ne va pas je suis preneur

    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
     
     
    Sub trixls()
     
     
    Dim i As Integer
    Dim j As Integer
    Dim c As Integer
     
     
     
    c = 0
    i = 4
    j = 5
     
    Workbooks.Open ("C:\Users\Martinez\Desktop\test\Remise en forme AD.xlsm")
    Workbooks.Open ("C:\Users\Martinez\Desktop\test\remise en forme matériel 01A.xlsm")
     
     
    While (Workbooks("remise en forme AD.xlsm").Sheets(1).Cells(i, 2).Value <> "")
     
     
     
        While (Workbooks("remise en forme matériel 01A.xlsm").Sheets(1).Cells(j, 15).Value <> "")
     
     
                 If (Workbooks("remise en forme matériel 01A.xlsm").Sheets(1).Cells(j, 15).Value <> Workbooks("remise en forme AD.xlsm").Sheets(1).Cells(i, 2).Value) Then
     
     
                              i = i + 1
     
                    End If
     
     
     
     
                    If (Workbooks("remise en forme AD.xlsm").Sheets(1).Cells(i, 2).Value = "") Then
                        Workbooks("remise en forme AD.xlsm").Sheets(1).Cells(i, 2).Value = Workbooks("remise en forme matériel 01A.xlsm").Sheets(1).Cells(j, 15).Value
                        c = c + 1
                        j = j + 1
                        i = i + 1
     
                    End If
     
                    If (Workbooks("remise en forme AD.xlsm").Sheets(1).Cells(i, 2).Value = Workbooks("remise en forme matériel 01A.xlsm").Sheets(1).Cells(j, 15).Value) Then
     
                    j = j + 1
                    i = 4
     
     
                     End If
     
     
     
     
        Wend
     
     
     
    Wend
     
     
    MsgBox c
     
     
    End Sub
    Le code actuel semble contenir une boucle infinie mais je ne comprend pas où

    En vous remerciant par avance !

  5. #5
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Par défaut
    Si ton but c'est de supprimer les doublons d'une colonne utilise plutôt la méthode "remove duplicates"

    Bonne journée,

  6. #6
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2019
    Messages : 14
    Par défaut
    Non justement je ne suis pas censé avoir de doublon, le but final de la macro est d'avoir exactement les 2 mêmes colonnes sur mes 2 fichiers en ajoutant les données manquantes de chaque fichier.

    Je te fais un exemple :

    Colonne A Colonne B
    a a
    b e
    c f
    d b

    et je veux obtenir :

    Colonne A Colonne B
    a a
    b e
    c f
    d b
    e c
    f d


    Sachant que les 2 colonnes sont dans des workbooks différents.

  7. #7
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Le plus utile serait à mon avis de procéder à l'affichage des variables locales et constater l'évolution de celles-ci lors d'une exécution pas à pas.

    Autre piste, trop souvent ignorée à mon sens, utiliser l'instruction .

    Quand bien même, imbriquer des boucles Loop est souvent générateur d'erreur(s).

    C'est, comme on dit, "juste mon avis".

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

Discussions similaires

  1. [XL-2013] Macro comparaison deux fichier vba
    Par lorao12 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/05/2018, 16h14
  2. Crash après utilisation de la fonction /ATOUCHE
    Par 0v3rl0w dans le forum Cpcdos
    Réponses: 8
    Dernier message: 04/01/2018, 23h40
  3. Réponses: 18
    Dernier message: 19/03/2014, 19h04
  4. Fusion de fichiers .csv et comparaison avec fichier .xls
    Par GourenBZH dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/04/2008, 15h15
  5. [VBA-E] ouvrir un fichier .xls sans executer les macro
    Par lae_t2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/01/2003, 18h07

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