Re: Consigne aléatoire
#11
Aspirant XLPages

Inscription: 20/04/2010

Messages: 28

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 03-07-2010 09h14
Bonjour Guy, le Forum,

Voici donc un extrait de mon fichier qui à l'exécution de la macro1 génère cette fameuse erreur 1004.

très cordialement,

Wilplan


Pièce jointe:
xlsm buggmacro.xlsm   [ Taille: 49.46 Ko - Téléchargements: 447 ]
Hors Ligne
Rapport   Haut 

Re: Consigne aléatoire
#12
Accro XLPages

Inscription: 09/01/2008
De Montréal, Québec

Messages: 463

Système d'exploitation:
PC
Version Excel utilisée:
97 à 2016
Posté le : 03-07-2010 13h56
Bonjour Wilplan,

Si tu me disais en mots ce que tu cherches à faire avec
   Range("A4:A12").Select
    Selection.Copy
    Sheets("Feuil1").Select
    Range("B11").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Feuil2").Select
    Range("B5:B12").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Feuil1").Select
    Range("D12").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Feuil2").Select
    Range("C6:C12").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Feuil1").Select
    Range("E13").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
    Selection.ClearContents
    Range("D12:D18").Select
    Selection.ClearContents
    Range("B11:B19").Select
    Selection.ClearContents
    Sheets("Feuil2").Select
    Range("B14").Select
 
je pourrais sans doute t'aider.

Le bogue se produit à la ligne
Selection.ClearContents
mais, bref, je n'ai pas le coeur à suivre les méandres de ce code produit avec l'enregistreur de macros et qui regorge de .Select. Un codeur ne produit pas de .Select mais des pointeurs explicites vers des objets ciblés. L'enregistreur de macros est très utile pour mettre le doigt sur une propriété ou une méthode (fonction) obscure mais pas pour coder.

Donc, que cherches-tu à faire au juste?

Cordialement,

Guy


Hors Ligne
Rapport   Haut 

Re: Consigne aléatoire
#13
Aspirant XLPages

Inscription: 20/04/2010

Messages: 28

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 03-07-2010 15h43
Re Bonjour,

Désolé Guy , je me doutais que j'allais te faire bondir avec un tel code. Il est vrai que j'aurai pu simplifier en supprimant les select.
Maintenant je n'ai jamais prétendu être un codeur, je rame déjà pour apprendre les formules alors pour le code vba je me débrouille comme je peux, mais promis dès que je maîtriserai les formules je m'attaquerai au langage VBA avec le même enthousiasme.

Ceci dit, je reviens à mon problème:

Je souhaite faire une macro qui copierait les communes, les temps de trajet et les temps de travaux de la feuil2 puis les coller sur la feuil1. Imprimer cette feuil1 et supprimer cette saisie. 
Cette feuil1 comporte des formules qui me calcule la durée totale (temps de trajet+tempsde travail) et de ce fait sélectionne le smiley adéquat. 

Avec mes remerciements,

Wilplan


Hors Ligne
Rapport   Haut 

Re: Consigne aléatoire
#14
Accro XLPages

Inscription: 09/01/2008
De Montréal, Québec

Messages: 463

Système d'exploitation:
PC
Version Excel utilisée:
97 à 2016
Posté le : 05-07-2010 13h00
Bonjour Wilplan,

Tout d'abord ma remarque sur la structure du code ne te visait nullement. Je l'ai voulue sous forme de mise en garde. L'enregistreur de macros est un bon ami, certes, mais un tant soit peu primitif comme codeur.

Ceci dit.

J’avais noté dans mon précédent message que l’erreur se produisait à l’exécution de
Selection.ClearContents
Si tu effaces les valeurs de la sélection en appuyant sur la touche Supprimer l’appel de la fonction de la cellule G3 provient de la cellule G3 alors que si tu utilises l’équivalent en code avec Selection.ClearContents l’appel provient du code VBA et dans ce cas Application.Caller porte l’erreur 2023 équivalent à #REF; ceci étant les propriétés .Height et .Width de Application.Caller provoquent une erreur 1004 puisqu’aucune largeur ou hauteur n’existe pour l’erreur 2023.

Pour contourner ce désagrément je n’ai rien trouvé de mieux que d’ajouter un cas particulier dans le gestionnaire d’erreurs.

Smileys_Erreur:
  Select Case Err.Number
 
    Case 0, 1004 ' Passe ou contourne l'erreur du Selection.ClearContents.
    Case -2147024809 ' Erreur de nom d'image
      MsgBox "Veillez à n'inclure que des noms d'images valides dans la formule de la cellule " & Application.Caller.Address(False, False), _
              vbCritical, "Nom d'image invalide!"
             
           
    Case Else ' Affiche l'erreur
      MsgBox "Erreur " & Err.Number & " (" & Err.Description & ") dans la procédure Smileys du Module modSmiley"

  End Select
 
Pas plus brillant qu'il faut mais ça marche. Somme toute je dois être un peu enregistreur de macros moi-même

Alors remplace le gestionnaire d'erreurs par celui fourni et dis-moi si la correction te convient.

En référence voir :

msdn.microsoft.com/en-us/library/bb220902%28office.12%29.aspx
www.cpearson.com/excel/sheetref.htm

Cordialement,

Guy

Hors Ligne
Rapport   Haut 

Re: Consigne aléatoire
#15
Aspirant XLPages

Inscription: 20/04/2010

Messages: 28

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 05-07-2010 21h41
Bonsoir Guy,

Pour un code pas plus brillant qu'il faut, il est tout simplement Lumineux.
Merci à toi. 

Cordialement,

Wilplan
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes