Problème sur Application.Union
Résolu/Fermé
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
-
Modifié par Kuartz le 2/11/2016 à 12:27
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 - 3 nov. 2016 à 10:08
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 - 3 nov. 2016 à 10:08
4 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 776
2 nov. 2016 à 16:15
2 nov. 2016 à 16:15
Re,
Ton fichier avec la macro revue et corrigée :
https://www.cjoint.com/c/FKcpo5jgDiY
Ton fichier avec la macro revue et corrigée :
https://www.cjoint.com/c/FKcpo5jgDiY
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 776
2 nov. 2016 à 13:21
2 nov. 2016 à 13:21
Bonjour,
Supprimes l'emploi des Select et tu n'aura plus de problème.
Supprimes l'emploi des Select et tu n'aura plus de problème.
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
2 nov. 2016 à 13:27
2 nov. 2016 à 13:27
Bonjour Patrice33740,
Merci pour ta réponse.
Le problème étant que j'ai besoin de sélectionner les cellules en question pour insérer un graphique ensuite.
Si tu regarde comment j'ai construis le code, à la première vérification, je sélectionne des cellules, ensuite, sur les vérifications suivantes, j'ajoute des cellules à ma sélection actuelle.
Sinon, comment je pourrais faire pour travailler directement sur le classeur qui m'intéresse? Car là je passe par un classeur initial qui créé mon classeur sur lequel je travaille. D'où le problème de sélection.
J'ai bien essayé un xlBook.Activate. Et ensuite, au lieu de
J'écris :
Et là, plus d'erreur dans le code. Oui sauf que les sélections se font sur le classeur initial d'où a été lancée la macro. Et non sur classeur xlBook...
Merci pour ta réponse.
Le problème étant que j'ai besoin de sélectionner les cellules en question pour insérer un graphique ensuite.
Si tu regarde comment j'ai construis le code, à la première vérification, je sélectionne des cellules, ensuite, sur les vérifications suivantes, j'ajoute des cellules à ma sélection actuelle.
Sinon, comment je pourrais faire pour travailler directement sur le classeur qui m'intéresse? Car là je passe par un classeur initial qui créé mon classeur sur lequel je travaille. D'où le problème de sélection.
J'ai bien essayé un xlBook.Activate. Et ensuite, au lieu de
Application.Union(xlBook.Sheets(1).Range("A" & i), xlBook.Sheets(1).Range("K" & i)).Select
J'écris :
Application.Union(ActiveWorkbook.Sheets(1).Range("A" & i), ActiveWorkbook.Sheets(1).Range("K" & i)).Select
Et là, plus d'erreur dans le code. Oui sauf que les sélections se font sur le classeur initial d'où a été lancée la macro. Et non sur classeur xlBook...
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 776
2 nov. 2016 à 13:33
2 nov. 2016 à 13:33
Re,
Dim r as Range Set r = Application.Union(ActiveWorkbook.Sheets(1).Range("A" & i), _ ActiveWorkbook.Sheets(1).Range("K" & i)) r.select
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
>
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
2 nov. 2016 à 13:41
2 nov. 2016 à 13:41
Re,
Du coup j'ai écris :
Même message d'erreur "La méthode 'Union' de l'objet '_Application' a échoué"..
Du coup j'ai écris :
Set r = Application.Union(xlBook.Sheets(1).Range("A" & i), xlBook.Sheets(1).Range("K" & i))
Même message d'erreur "La méthode 'Union' de l'objet '_Application' a échoué"..
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
>
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
2 nov. 2016 à 13:42
2 nov. 2016 à 13:42
Microsoft dit :
Visual Basic a défini une référence à Excel en raison d'une ligne de code qui appelle un objet, une méthode ou une propriété Excel sans qualifier cet élément avec une variable objet Excel. Visual Basic ne libère pas cette référence tant que vous ne quittez pas le programme. Cette référence dévoyée interfère avec un code Automation si le code est exécuté plusieurs fois.
Visual Basic a défini une référence à Excel en raison d'une ligne de code qui appelle un objet, une méthode ou une propriété Excel sans qualifier cet élément avec une variable objet Excel. Visual Basic ne libère pas cette référence tant que vous ne quittez pas le programme. Cette référence dévoyée interfère avec un code Automation si le code est exécuté plusieurs fois.
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 776
2 nov. 2016 à 13:49
2 nov. 2016 à 13:49
Re,
En écrivant quelque chose comme :
En écrivant quelque chose comme :
Dim r as Range With xlBook.Worksheets(1) compteur = 0 Set r = Nothing For i = 2 To DL_REPARTITION If .Range("A" & i).Font.Bold = True And _ .Range("A" & i).Value <> "Total Général" Then Set r = Application.Union(r, .Sheets(1).Range("A" & i), _ .Sheets(1).Range("K" & i)) End If Next i End With
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
>
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
2 nov. 2016 à 13:55
2 nov. 2016 à 13:55
"Propriété ou méthode non gérée par cet objet" sur la ligne :
Set r = Application.Union(r, .Sheets(1).Range("A" & i), _
.Sheets(1).Range("K" & i))
Est-ce que ce serait parce qu'initialement r = Nothing donc il ne comprend pas comment avoir un Union sur nothing?
Set r = Application.Union(r, .Sheets(1).Range("A" & i), _
.Sheets(1).Range("K" & i))
Est-ce que ce serait parce qu'initialement r = Nothing donc il ne comprend pas comment avoir un Union sur nothing?
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 776
2 nov. 2016 à 14:33
2 nov. 2016 à 14:33
C'est normal, il faut sélectionner r si c'est indispensable (ce qui est rarement le cas !), essaies :
Dim r As Range With xlBook.Worksheets(1) compteur = 0 Set r = Nothing For i = 2 To DL_REPARTITION If .Range("A" & i).Font.Bold = True And _ .Range("A" & i).Value <> "Total Général" Then Set r = Application.Union(r, .Range("A" & i), _ .Range("K" & i)) End If Next i r.Select 'pour selectionner r si c'est nécessaire !!! End With
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
2 nov. 2016 à 14:40
2 nov. 2016 à 14:40
"Argument ou appel de procédure incorrect" sur la ligne :
en faisant un copier/coller de ton code.
Set r = Application.Union(r, .Range("A" & i), _ .Range("K" & i))
en faisant un copier/coller de ton code.
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 776
2 nov. 2016 à 14:50
2 nov. 2016 à 14:50
Poste ton fichier sur cjoint.
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
>
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
2 nov. 2016 à 15:01
2 nov. 2016 à 15:01
Re,
Voici le fichier https://www.cjoint.com/c/FKcoaog7yTf
Il ne faut pas oublier de changer le chemin d'enregistrement du fichier généré.
Merci encore pour ton aide.
En attendant, je vais faire un tableau provisoire pour générer mon graphique sans utiliser la fonction Union.
Voici le fichier https://www.cjoint.com/c/FKcoaog7yTf
Il ne faut pas oublier de changer le chemin d'enregistrement du fichier généré.
Merci encore pour ton aide.
En attendant, je vais faire un tableau provisoire pour générer mon graphique sans utiliser la fonction Union.
3 nov. 2016 à 10:08
Effectivement ça fonctionne très bien !
Merci pour ton aide. Et merci de m'avoir appris pas mal de choses grâce aux changements sur mon code, notamment le fait de créer un objet pour la feuille de mon classeur initial, ce qui évite de répéter 15 fois la même chose.
Merci encore.
Cordialement.