Bonjour
Bizarre qu'il y a 2 fois cette ligne de code :
Sheets(NomFeuilleProjet).Select
Je pense que la première serait à supprimer .
un petit plus pour vos prochains posts : https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
Bonjour
pour poster ton code merci de faire comme décrit là https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
Quand ça plante, quel est le contenu de nomFeuilleProjet?
Cette feuille existe-t-elle dans le classeur?
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Bonjour et merci pour vos réponses .
Désolé de ne pas avoir déposer les lignes de code de la bonne manière , je saurai pour la prochaine fois ;) !
@vb95 StatutContributeur : j'ai supprimé la 1ère ligne de code
Sheets(NomFeuilleProjet).Select
Mais le résultat reste le même ;( .
@Whismeril StatutContributeur : Le contenu de nomFeuilleProjet est : "Projet" et cette feuille existe bel et bien dans le classeur .
Merci d'avance pour vos futures réflexions et à votre disposition pour vous aider .
Bruno
Merci de ne pas me citer avec @tvnbebeKIHN StatutMembre ça envoie un mail, or la discussion est déjà suivie, ça fait doublon.
Le contenu de nomFeuilleProjet est : "Projet" et cette feuille existe bel et bien dans le classeur .
On est d'accord que tu as espionné la variable au moment du crash?
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionOK pour la citation , désolé ;) .
Pour la variable , au moment du crash , je clique sur le bouton débogage du message d'erreur, ce qui m'ouvre le code en m'indiquant en jaune la ligne incriminée .
En passant ma souris dessus j'obtiens "projet" comme contenu .
Si ce n'est pas la bonne manière d'obtenir l'info souhaité , merci de me dire comment faire , car c'est la seule façon que je connaisse ; )
Merci
Bonjour
La ligne qui cause l'erreur : c'est la 4 ou c'est la 13 ( voir le premier message ) ?
C'est la 13 qui est pointée en jaune lors du débogage .
Merci
C'est la bonne méthode.
A la ligne tu actives un autre fichier, que celui qui est activé en ligne 3.
Dans ce fichier, y a t il la feuille "projet"?
Attention, c'est peut-être sensible à la casse (y'a longtemps que je n'ai pas fait de vba).
Une fois tu écris "Projet", une autre "projet" et du coup ce serait 2 noms différents.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Effectivement , un fichier d'archive est créé à partir de celui où je lance la macro .
Les 2 fichiers (origine et destination) ont une feuille nommée à l'identique "Projet" (avec "P" en majuscule) .
Et le contenu de la variable qui semble poser problème est bien également identique "Projet" .
Par acquis de conscience j'ai vérifié s'il n'y avait pas un blanc qui trainait de ci de là , mais rien non plus .
Je me permet de répéter au cas où , que cette macro fonctionne toujours avec Excel 2010 ;) !
Merci d'avance
Bruno
Et si tu écris "Projet" en dur?
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Voici ce que j'ai écrit pour mettre en dur la variable : NomFeuilleProjet = "Projet" (j'espère ne pas m'être trompé)
J'ai ensuite relancé la macro qui s'est arrêtée avec l'erreur d'exécution 1004 :
La Méthode Pastespecial de la classe Range a échouée .
Il pointe en jaune alors la ligne :
selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
La valeur de xlPasteAll est de -4104
Selon la doc, les paramètres de PasteSpecial sont facultatifs, et comme tu as mis les paramètres par défaut tu peux essayer sans.
Une autre option peut être d'utiliser l'enregistreur de macro de sélectionner une zone dans un fichier et la coller dans un autre pour voir s'il y a des différences de syntaxe avec 365.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Salut Whismeril ,
merci pour tout ce que tu fais ;) !
J'ai mis en commentaire la fonction facultative et la macro a poursuivi son chemin ...
Jusqu'à un autre module où j'ai obtenu également l'erreur d'exécution 9 sur la ligne de code :
Set w = Worksheets(feuille) .
La valeur de feuille étant "Projet" , j'ai pris l'initiative de remplacer cette ligne et d'écrire en dur :
feuille = "Projet"
ça passe à la ligne suivante , mais pas plus loin ;) . J'obtiens désormais l'erreur d'exécution '91' : Variable objet ou variable de bloc With non définie
Sub ChangeFilters(feuille) Dim w As Worksheet feuille = "Projet" ' Set w = Worksheets(feuille) With w.AutoFilter If w.AutoFilterMode Then currentFiltRange = .Range.Address FilterExist = True With .Filters ReDim filterArray(1 To .Count, 1 To 3) For f = 1 To .Count With .Item(f) If .On Then filterArray(f, 1) = .Criteria1 If .Operator Then filterArray(f, 2) = .Operator filterArray(f, 3) = .Criteria2 End If End If End With Next End With Else FilterExist = False ActiveCell.SpecialCells(xlLastCell).Select lignetotal = Selection.Row currentFiltRange = "$A$3:$DM$" & lignetotal End If End With
Il est possible qu'on soit proche de la fin de la macro , car il y a 6 modules et on est dans le dernier ;)
Encore merci d'avance
Si tu as mis toute la fonction en commentaire, ça ne va plus copier.
C'est les paramètres qui sont facultatifs.
Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Désolé , mes connaissances sont maigres en VB ;( !
J'ai fait ce que tu m'as dit (juste mis en commentaire (Selection.PasteSpecial) , mais j'obtiens le même résultat que précédemment ;( (POST 13) .
désolé ...
Bruno
Laisse le pastespecial, sans rien derrière (enlève les instructions que j'ai postées en #14)
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
C'est exactement ce que j'avais fait initialement , j'avais uniquement laissé Selection.Pastespecial et virer les paramètres derrière ;) !
J'ai retenté au cas où et j'obtiens toujours l'erreur d'exécution 91 décrite dans le POST 13 ...
Ah
J'ai mis en commentaire la fonction facultative
était trompeur, la.fonction tu l'avais gardée en fait.
dans le.message #13, on dirait que la ligne
' Set w = Worksheets(feuille)
est commentée, si c'est bien le cas, il n'y a rien de w quand tu veux accéder à ses propriétés.
Il faudrait dêcommenter.
Pour tes prochains posts, pense à forcer le langage Basic pour la coloration, comme décrit ici https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Salut Wishmeril ,
je l'avais commentée car j'avais mis en dur la valeur ;)
Je l'ai décommentée , mais l'erreur reste identique ;( sur la ligne with w.AutoFilter j'obtiens erreur d'exécution '91' : Variable objet ou variable de bloc With non définie
Si tu as encore une idée , je suis preneur .
Merci pour tout
Bonjour,
Quand une application fonction depuis un certain temps et qu'elle se met à déconner après un évolution de version, windows et/ou Excel, je me dis qu'il s'agit d'un problème environnementale !
Certe il faut vérifier la déclaration des API, mais également le chemin des libraires utiliser dans les références du projet VBA.
En effet le chemin de ces DLL est embarqué dans le projet VBA. Par exemple visuel Basic For Application devait ce trouver dans "programme file (X86)" et maintenant dans "programme file wo64.
Dans VBA=>menu=>outils=>références
Supprimes si il en a les librairies manquantes!
Bonjour et merci Dysothographie ,
j'ai ouvert les références comme tu l'as si bien décrit dans ton message et voici les 5 références cochées
Chacune d'elle renvoi vers un fichier qui après vérification existe bien sur mon PC .
Par contre , tu marques "Supprime les librairies manquantes" et là je ne comprends pas ...
Pourrais tu STP me donner un peu plus de détails STP ?
Merci d'avance