Départ macro suite à chgt valeur cellule

Bonsoir,

Un petit coup de main please

Ci-joint mon fichier :

  • Sur ce fichier un code qui démarre une macro lorsque la cellule B3 = 1234
  • Ca fonctionne nickel lorsque l'on saisit 1234 en B3 ; donc en saisissant 1234 en B3 puis en validant
  • Cependant, je souhaiterai que cette macro débute lorsque B3 contient 1234 mais sans validation, puisque B3 doit être incrémenter par l'intermédiaire de A3 ; en l'occurrence lorsque A3 contient 1 (formule si en B3)

Pas bien facile d'expliquer, mais me tiens à disposition pour plus de renseignements sur mon petit problème.

Merci par avance.

David

28david.zip (9.48 Ko)

Bonjour,

L'événement CHANGE se produit lorsque les cellules de la feuille de calcul sont modifiées par l'utilisateur ou par un lien externe.

Si c'est la cellule A3 qui est modifiée par l'utilisateur , tu peux surveiller ce changement en A3.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Range("A3"), Target) Is Nothing Then
        If Target.Offset(0, 1) = "1234" Then
            MsgBox "La macro va démarrer", , "IMPORTANT"
        End If
        Call Macro1
    End If
End Sub

A+

Ca me va pas trop dans la mesure où c'est le même problème pour moi !

En fait dans une des deux cellules je vais mettre une formule date (aujourdhui=) avec une mise en forme "nombre"

Lorsque cette cellule sera supérieure ou égale à ce nombre, y compris à l'ouverture du fichier il faudrait que ça me déclenche ma macro (pour info un "Sub EnvoieFichierJoint()"

Merci de t'intéresser.

@ toute....

Je ne peux pas deviner la structure de ton classeur et de ton programme mais tu dois pouvoir trouver quel est "l’évènement" qui te permettra d’initier le contrôle sur B3 et lancer ta macro.

Exemple : à l’ouverture du classeur avec Workbook_Open.

A+

Oula !

Cela devient compliqué pour un pauvre petit novice comme moi !

Pas de structure particulière !

Pour faire court, je vais créer une tache planifiée pour m'ouvrir le fameux classeur.

Une fois ouvert, je souhaiterai qu'une macro se lance d'elle même si une certaine cellule contient un certain nombre....... donc sans avoir à taper sur la touche entrée.

Désolé de n'être plus clair

..... et surtout un grand merci

@ +

J’ai repris ton classeur exemple pour illustrer ce que je te disais.

A l’ouverture du classeur, l’évènement Workbook_Open lance la procédure Macro1 après avoir vérifié si B3 contient la valeur "1234".

A+

33copie-de-david.zip (12.33 Ko)
11david.zip (10.71 Ko)
11david.zip (10.71 Ko)

C'est sympa, j'étais justement en train de modifier mon fichier afin d'être plus explicite ; j'y ai donc apporté tes modifs !

Cela fonctionne à l'ouverture c'est cool, mais comme je suis quelqu'un de pénible................. je continued

Voici mon fichier :

L'idée, est d'envoyer tous les premiers du mois un fichier afin de le sauvegarder.......... "en cas que" !

Il faudrait donc que la macro fonctionne une seule fois pour "1" en B3 ; la prochaine étape étant le mois prochain en C3 ; etc.....

Est ce possible s'il te plait ?

Merci.

@ +

David

18copie-de-david.zip (10.90 Ko)

Bonsoir,

C'est quoi cette manie de déformer sa demande et de dire ensuite oui mais en fait je voulais faire ça.... ?

Autant tout dire du 1er coup.

Sauvegarde la date de sauvegarde dans une cellule et contrôle si on est passé à un mois ultérieur :

Private Sub Workbook_Open()
    If Year([Date]) * 100 + Month([Date]) > Year([A1]) * 100 + Month([A1]) Then
        Macro1
        [A1] = Date
    End If
End Sub

eric

Bonjour Eriiic,

Désolé mais disons que j'essaie de m'adapter à la compréhension de mon interlocuteur et de ses explications lorsque cela ne me convient pas ; et oui, je suis pire qu'une gonzesse

Lol......... sinon, je te remercie c'est sympa de ta part.

Je constate que tu m'as trouvé une solution, mais pourrais tu me dire où il faut que je colle ce code dans la mesure où je possède déjà "Private Sub Workbook_Open()" dans "This Worbook" ; ça ne va pas faire un conflit ?

Merci encore.

@ toute.

David

16copie-de-david.zip (10.79 Ko)

Bonjour dasaquit, bonjour Eriiic, le forum

Tout d’abord, merci de faire l’effort de t’adapter à la compréhension de ton interlocuteur .

Si j’ai bien compris ce que tu cherches à faire comprendre, l’idée est de lancer une sauvegarde une fois par mois.

Pour cela, il suffit que tu mémorises dans ton tableau les sauvegardes réalisées.

A l’ouverture du classeur, tu vérifies si pour le mois en cours la sauvegarde a été réalisée. Si ce n’est pas le cas, tu lances la macro.

Regarde l’exemple et dis-nous si ou pas si.

A+

28copie-de-david.zip (12.94 Ko)

Bonjour Frangy,

Merci oui tu as très bien compris mon souhait, et ceci à l'air de fonctionner c'est très sympa.

Cependant, amateur que je suis, et regardant ton bout de code, je me demande comment le retranscrire sur mon véritable fichier comportant 12 mois !

Merci.

@ +

David

Tu ne devrais pas avoir de problème, dès l’instant où la date spécifiée est le premier du mois.

Le programme effectue la recherche sur la totalité de la ligne 2. Tu peux aller jusqu'au 01/11/2092 si tu n'as pas droit à la retraite avant.

A+

Bonjour à tous,

se poser la question s'il est vraiment nécessaire de sauvegarder toutes les dates de sauvegarde.

A mon avis ça complique et prend de la place pour rien. Si celle de d'octobre n'a pas été faite il est trop tard de toute façon. Pour moi savoir que celle du mois en cours n'a pas été réalisée et qu'il faut la faire est suffisant.

je possède déjà "Private Sub Workbook_Open()" dans "This Worbook" ; ça ne va pas faire un conflit ?

Tu ne peux avoir qu'une seule procédure de ce type.

Il faut y mettre dedans toutes les actions que tu dois réaliser à l'ouverture du classeur. Soit suite à un test, soit systématiquement.

eric

edit : @frangy

stocker la date du 1er du mois n'est pas une bonne idée. La sauvegarde ne se fera pas si on ne l'ouvre que le 2 (il y a des jours ou on ne travaille pas)

now() fourni date+heure, le test ne sera positif que s'il est 00:00 pile-poil à l'ouverture du fichier (soit très très très rarement )

@eriiic

stocker la date du 1er du mois n'est pas une bonne idée. La sauvegarde ne se fera pas si on ne l'ouvre que le 2 (il y a des jours ou on ne travaille pas)

now() fourni date+heure, le test ne sera positif que s'il est 00:00 pile-poil à l'ouverture du fichier (soit très très très rarement)

Il ne s’agit pas de stocker la date du 1er du mois mais de mémoriser la date à laquelle est effectuée la sauvegarde. La date du 1er du mois est la butée fixée par le demandeur.

Désolé de me répéter si tu as lu ce que j’ai écris précédemment : à l’ouverture du classeur, on vérifie si pour le mois en cours la sauvegarde a été réalisée. Si ce n’est pas le cas, on lance la macro.

A+

Re,

mea-culpa, j'avais lu ton code en diagonale. Le fait de saisir le mois sur la ligne 2, en plus de stocker la date en-dessous, m'a trompé.

Reste à savoir si stocker toutes les dates est réellement intéressant vu que seule la dernière est utile (je n'arrive pas à ouvrir correctement le fichier original du demandeur)

eric

Bonjour tout le monde,

Désolé pour cette petite absence mais boulot boulot ; heureusement qu'il y a le dimanche pour faire du Excel

Un grand merci à tous, mais encore un soucis ; j'aime bien faire le pénible .... lol

J'ai adapté le fichier dont ma fait part Frangy afin de l'utiliser sur une année complète et l'incorporer à mon plus gros fichier une fois testé !

Le fait d'avoir remplacé le 01/11/2012 en L2 pour le remplacer par une formule date fait que ça ne fonctionne plus !

Je joins une nouvelle fois le fichier.

Encore merci pour votre précieuse aide ainsi que votre patience.

@ toute.

David

11copie-de-david.zip (14.85 Ko)

Bonjour,

je réitère pour la 3ème fois ma question : as-tu vraiment besoin de conserver toutes les dates de sauvegarde ?

eric

Salut Eriiic,

Non pas du tout, je souhaite juste déclencher une macro tous les 1er du mois ou plus tard si le fichier n'a pas été ouvert, et qu'elle fonctionne qu'une seule fois !

Voilà !


Re !

Disons aussi qu'avec la sauvegarde des dates tel que c'est fait, on contrôle que la sauvegarde s'est bien faite !

Curieux comme je suis, j'aime bien comprendre, même si tu me trouves une autre solution beaucoup plus simple et "légère" ce serait sympa de me dire pourquoi ça ne fonctionne pas avec une formule date s'il te plait

Merci.


Je retire ma dernière question j'ai trouvé la solution à ce problème.

Désolé !

Re re bonjour à tous

Je vais cloturer ce post dans la mesure où je déteste embéter les gens et que j'ai, grace à vous trouver la solution de mon problème !

Pour rappel, je vais faire ouvrir ce fichier par le gestionnaire des taches Windows, et ce petit fichier va me lancer ma macro "envoi_mail" pour me refermer le fichier tout seul !

J'ai voulu procéder comme cela car, vu mon niveau je ne voyais pas me lancer dans le démarrage d'un programme "c:" au lancement de Windows !

Je joins le fichier pour ceux que ça intéressera dans l'avenir.

Si une personne peut m'aider par contre sur l'envoi de mail par macro, je suis preneur

En effet, je souhaitais utiliser ceci :

Sub EnvoieFichierJoint()

Dim Dest As String

Dim Sujet As String

Dest = "monsieur_duchemolle@orange.fr"

Sujet = "Recettes - Dépenses"

ActiveWorkbook.SendMail Dest, Sujet, True

End Sub

Le problème est que j'ai Outlook au taf, Outlook express et window live mail à la maison.

Au taf nickel, pas pour la maison !

Je pense donc utiliser un code basé sur un serveur ; qu'en pensez vous s'il vous plait ?

Merci.

@ toute........

5copie-de-david.zip (14.84 Ko)

Re,

si tu me trouves une autre solution beaucoup plus simple et "légère"

C'est ce que je t'avais proposé dans le post du 23 Nov 2012, 01:13 mais bon...

eric

Rechercher des sujets similaires à "depart macro suite chgt valeur"