Commentaires

  1. Avatar de BMG MODE
    • |
    • permalink
    Bonjour Patrick, j'ai téléchargé le fichier. Mais j'ai eu du mal à adapter à ce que je voulais. J'ai deux projets :

    D'une part pouvoir rendre la cellule H3 un calendrier de sélection de Mois et Année avec un clic droit comme vous l'avez fait. Et la Cellule E5 prend la valeur du 1er jour du mois sélection

    Pour le deuxième projet c'est de pouvoir sélectionner seulement c'est de grisés la grille des dans sauf pour les lundi. Après sélection mettre la la valeur dans B2
    Merci beaucoup d'avance
  2. Avatar de Pierre Fauconnier
    • |
    • permalink
    On parle ici d'erreurs de syntaxe, pas d'erreurs d'exécution. Je ne sais pas ce que tu as tenté mais les erreurs de syntaxe sont bien décelées et mises en rouge lors de la validation de la ligne
  3. Avatar de clementmarcotte
    • |
    • permalink
    Je viens encore de tester dans Word. J'ai décoché ta case et l'erreur n'a été décelée qu'à l'exécution. Je ne sais pas si c'est à cause de la version d'Office (Office 365) mais si la case est décochée la validation de la syntaxe au cours de la frappe est inopérante. Mais elle a quand même lieu à l'exécution, mais ce n'est pas nouveau


    [IMG]C:\Users\Clement\Pictures\Temporaire\PF.jpg[/IMG]
  4. Avatar de Pierre Fauconnier
    • |
    • permalink
    L'individu estimant avoir un droit de réponse, je vais donc préciser mon propos.

    Lorsque l'on décoche la case comme illustré dans ce message, on n'obtient plus de msgbox lors de la tentative d'une ligne dont la syntaxe est mauvaise. Cela permet de réaliser des copier-coller sur des lignes incomplètes de code sans se prendre le message à chaque coup.

    Je conviens que l'appellation de la case "Vérification automatique de la syntaxe" est ambiguë, mais la syntaxe continue bien à être vérifiée à la validation de la ligne et la ligne sera colorée en rouge si invalide. Ce que je dis ici est très rapidement vérifiable.

    Dès lors, si la réponse ne te convient pas et que le fait de décocher la case ne règle pas le problème dont tu parles, c'est que tu t'es mal exprimé, que je t'ai mal compris, voire les deux. Dans ce cas, ça ferait avancer les choses que tu expliques le cas autrement, éventuellement avec une ou deux copies d'écran, que je puisse voir moi-même si j'avais bien compris et si le VBA offre une solution ou pas.

    Pour le reste, chacun comprendra que sur des forums VBA, les gens attendent des solutions VBA et sont donc près à accepter les limites de ce langage
    Mis à jour 12/07/2019 à 06h55 par Pierre Fauconnier
  5. Avatar de François DORIN
    • |
    • permalink
    Citation Envoyé par SQLpro
    Mon petit françois.... , d'abord merci pour ce billet..... Et pour le reste que tu sais !

    mais je vais me faire l'avocat du diable.... Tu dis :
    "...la philosophie générale régnant sur Développez.com. Il y règne un esprit de bienveillance et d'entre-aide."
    C'est peu être vrai pour la majorité des gens et certainement pour la presque totalité de ceux qui y postent des articles et des réponses...

    MAIS...
    n'ayant jamais été un adepte du consensus mou ni du politiquement correct, j'ai toujours tenté d'être impartial et de sévir lorsque des bêtises se disaient !
    Entre-aide, oui, bienveillance .... moins en ce qui me concerne... Ou plus exactement pas toujours !
    Il m'arrive de mettre le doigt ou ça fait mal et de le dire.

    Mais alors, cela signifie qu'il y a en plus sur developpez.com une certaine liberté !

    Pour ma part, j'y poste depuis presque 20 ans !

    A +
    Bonsoir Frédéric,

    Tu as très bien résumé la situation, notamment lorsque tu dis entre-aide oui, bienveillance, pas toujours.

    Je me suis beaucoup investi pour développez.com. Et depuis que j'ai pris un peu de recul, j'ai eu des échos très... étonnant ! Par exemple, que ma présence beaucoup plus épisodique ces derniers mois relève d'un manque de temps. Ce qui est totalement faux. J'ai rendu mon tablier (de responsable de la rubrique .Net et de responsable Magazine) pour des raisons bien autres (liées à un conflit en interne avec une personne, mais je n'en dirais pas plus). Je viens tous les jours, mais je réponds moins car j'ai changé mes habitudes et souvent les questions ont déjà des réponses quand je les lis

    Mais au delà de ça, j'ai eu de nombreux témoignage de cette bienveillance (et j'en remercie les auteurs, ils se reconnaîtront ! ).
  6. Avatar de bouye
    • |
    • permalink
    Une interview de Vos sur Jaxenter indique bien que le support Android est aussi dans les cartons
  7. Avatar de patricktoulon
    • |
    • permalink
    Citation Envoyé par Pierre Fauconnier
    Salut.

    Si tant est que cela ait une quelconque utilité de redimensionner l'application et pas uniquement la fenêtre courante, car dans les faits cela revient au même, me semble-t-il:
    • Que se passe-t-il si aucune feuille de calcul n'est active au moment du redimensionnement? => plantage;
    • Que se passe-t-il si c'est un autre objet qu'un Range qui est actif au moment du redimensionnement? => plantage;
    • Il faudra blinder le code avec une super gestion d'erreur car dès que l'on stoppera le code suite à un débogage, la variable Cmbrs sera Nothing et ton brol ne fonctionnera plus;
    • Ce truc redimensionne TOUTES les feuilles pour zoomer sur A1:L30, or il est assez rare que toutes les feuilles aient besoin du même zoom. Une approche plus réaliste consisterait à utiliser une plage nommée par feuille à l'instar de Zone_d_impression pour que chaque feuille soit redimensionnée de façon personnalisée;
    • Devoir modifier l'environnement de l'utilisateur en désactivant un bouton (même peu utilisé) pour que le brol fonctionne me semble une fantaisie de haut vol (pourquoi celui-là et pas un autre?);
    • la sélection d'une zone n'est pas sans conséquences sur le reste du code, car tu peux très bien avoir un évènement SelectionChange qui est écouté dans l'appli, et range("a1:l30).select va le déclencher, avec peut-être des conséquences non maîtrisées. Il faudrait donc court-circuiter l'évènement soit par Application.EnableEvents qui passe à False le temps du traitement et repasse à ce qu'il était avant après le traitement (avec un on error pour gérer le problème éventuel). C'est toujours un danger, et pour moi de la mauvaise programmation, que de sélectionner une plage sans que cela ne soit absolument nécessaire;
    • ...


    Je pense donc que ce code est plus dangereux et improductif qu'autre chose. Vu que Workbook_WindowResize existe, je pense même qu'il est inutile. Pourquoi Workbook_WindowResize n'est-il pas suffisant, avec bien sûr les précautions d'usage (voir certains points listés plus haut)? Et ces précautions font que c'est loin d'être simple de penser à toutes les conséquences de ce qu'on programme. Il ne suffit pas d'avoir une "idée de génie", inutile qui plus est, il faut pouvoir la mettre en oeuvre de façon professionnelle.
    bonjour pierre
    inutile pour toi
    quand au fait d'être généraliste(sur toute les feuilles) ca peut se régler très facilement
    cela dit dans l'exemple fourni je zoom une plage mais on peut parfaitement faire autre chose dont on aurait besoins

    interdire le redimensionnement
    interdire le déplacement
    modifier la position ,dimension d'une autre fenêtre
    etc. .etc...


    c'est cet aspect la que j'aurais voulu que tu vois

    il suffit de coder ton besoins dans le pseudo évènement comme dans les évènement existant

    Vu que Workbook_WindowResize existe
    oui mais cet évènement est déclenché par le Resize du window(classeur)
    perso par exemple je me suis fait un pseudo aerosnake pour afficher deux classeurs dans 2 instances d'Excel différentes cote a cote prenant chacun la moitié de l'écran
  8. Avatar de Pierre Fauconnier
    • |
    • permalink
    Salut.

    Si tant est que cela ait une quelconque utilité de redimensionner l'application et pas uniquement la fenêtre courante, car dans les faits cela revient au même, me semble-t-il:
    • Que se passe-t-il si aucune feuille de calcul n'est active au moment du redimensionnement? => plantage;
    • Que se passe-t-il si c'est un autre objet qu'un Range qui est actif au moment du redimensionnement? => plantage;
    • Il faudra blinder le code avec une super gestion d'erreur car dès que l'on stoppera le code suite à un débogage, la variable Cmbrs sera Nothing et ton brol ne fonctionnera plus;
    • Ce truc redimensionne TOUTES les feuilles pour zoomer sur A1:L30, or il est assez rare que toutes les feuilles aient besoin du même zoom. Une approche plus réaliste consisterait à utiliser une plage nommée par feuille à l'instar de Zone_d_impression pour que chaque feuille soit redimensionnée de façon personnalisée;
    • Devoir modifier l'environnement de l'utilisateur en désactivant un bouton (même peu utilisé) pour que le brol fonctionne me semble une fantaisie de haut vol (pourquoi celui-là et pas un autre?);
    • la sélection d'une zone n'est pas sans conséquences sur le reste du code, car tu peux très bien avoir un évènement SelectionChange qui est écouté dans l'appli, et range("a1:l30).select va le déclencher, avec peut-être des conséquences non maîtrisées. Il faudrait donc court-circuiter l'évènement soit par Application.EnableEvents qui passe à False le temps du traitement et repasse à ce qu'il était avant après le traitement (avec un on error pour gérer le problème éventuel). C'est toujours un danger, et pour moi de la mauvaise programmation, que de sélectionner une plage sans que cela ne soit absolument nécessaire;
    • ...


    Je pense donc que ce code est plus dangereux et improductif qu'autre chose. Vu que Workbook_WindowResize existe, je pense même qu'il est inutile. Pourquoi Workbook_WindowResize n'est-il pas suffisant, avec bien sûr les précautions d'usage (voir certains points listés plus haut)? Et ces précautions font que c'est loin d'être simple de penser à toutes les conséquences de ce qu'on programme. Il ne suffit pas d'avoir une "idée de génie", inutile qui plus est, il faut pouvoir la mettre en oeuvre de façon professionnelle.
  9. Avatar de SQLpro
    • |
    • permalink
    Mon petit françois.... , d'abord merci pour ce billet..... Et pour le reste que tu sais !

    mais je vais me faire l'avocat du diable.... Tu dis :
    "...la philosophie générale régnant sur Développez.com. Il y règne un esprit de bienveillance et d'entre-aide."
    C'est peu être vrai pour la majorité des gens et certainement pour la presque totalité de ceux qui y postent des articles et des réponses...

    MAIS...
    n'ayant jamais été un adepte du consensus mou ni du politiquement correct, j'ai toujours tenté d'être impartial et de sévir lorsque des bêtises se disaient !
    Entre-aide, oui, bienveillance .... moins en ce qui me concerne... Ou plus exactement pas toujours !
    Il m'arrive de mettre le doigt ou ça fait mal et de le dire.

    Mais alors, cela signifie qu'il y a en plus sur developpez.com une certaine liberté !

    Pour ma part, j'y poste depuis presque 20 ans !

    A +
  10. Avatar de Philippe Tulliez
    • |
    • permalink
    Bonjour Patrick,
    N'est-ce pas exactement ce que j'ai écrit comme première possibilité ?
    Philippe

    Citation Envoyé par patricktoulon
    bonjour philippe tulliez
    une autre solution serait d'y mettre bel est bien un argument mais optional qui servira a rien et surtout predefinir un defaut
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test(Optional x As Long = 0)
    '....
    End Sub
    elle n'apparatra pas dans la liste par contre ATTENTION !!! si tu predefinie pas le (par defaut"=0")elle apparaitra dans la liste

    comme un optional n'est pas obligatoire dans l'apel on l'apellera sans argument

    comme ca tu laisse ton module sans private