IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Récupérer la valeur d'une cellule avant modification


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2017
    Messages : 40
    Par défaut Récupérer la valeur d'une cellule avant modification
    Bonjour,

    Encore un problème sans doute simple mais que je n'arrive pas à résoudre :

    J'ai dans une colonne des nombres entiers par exemple :

    1 en ligne 1
    3 en ligne 4
    ...
    et des cellules vides ailleurs.

    Je voudrais que si l'on tape n en ligne m, il y ait une vérification de recouvrement : c'est à dire vérifier qu'il y a uniquement des blancs dans les lignes m à m + n - 1 et dans le cas contraire afficher un message d'erreur et remettre la valeur qu'il y avait précédemment en ligne m.

    Exemple : avec les données précédentes accepter 1, 2 ou 3 comme saisie en ligne 1 mais refuser toute valeur supérieure ou égale à 4 et dans ce cas conserver à la ligne 1 sa valeur avant tentative de modification.

    Je suppose qu'il faut utiliser Worksheet_Change mais je ne sais pas comment récupérer la valeur avant modification ?

    Merci d'avance de votre aide.

  2. #2
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2017
    Messages : 40
    Par défaut
    La nuit portant conseil je me suis dit que j'allais récupérer la valeur préventivement à chaque changement de cellule avec Worksheet_SelectionChange :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
    Dim Valeur As Variant
    Dim Ligne As Long
    Dim Colonne As Long
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
        Valeur = Target.Value
        Ligne = Target.Row
        Colonne = Target.Column
     
    End Sub
    Le problème c'est que ça ne marche pas ??? (j'ai mis des espions sur Colonne, Ligne et Valeur : rien ne bouge).

    Merci par avance de votre aide.

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Qu'est-ce qui "ne marche pas" (expression devenue trop habituelle et dénuée de sens précis) ?
    - on ne voit pas, dans ce que tu montres, où et comment tu vérifies et décides de rétablir ou non l'ancienne valeur

    - le code que tu montres fait lui, son boulot et SON SEUL BOULOT (le seul que tu as défini), à savoir stocker en mémoire (dans tes variables) ce que tu as décidé d'y stocker ! Et il le fait, mais là s'arrête son action (la sienne). Que fais-tu ensuite de ces variables ? On ne le voit pas ...

  4. #4
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2017
    Messages : 40
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bonjour
    Qu'est-ce qui "ne marche pas" (expression devenue trop habituelle et dénuée de sens précis) ?
    - on ne voit pas, dans ce que tu montres, où et comment tu vérifies et décides de rétablir ou non l'ancienne valeur

    - le code que tu montres fait lui, son boulot et SON SEUL BOULOT (le seul que tu as défini), à savoir stocker en mémoire (dans tes variables) ce que tu as décidé d'y stocker ! Et il le fait, mais là s'arrête son action (la sienne). Que fais-tu ensuite de ces variables ? On ne le voit pas ...
    Bonjour,

    Mea Culpa et Merci : c'est exact je ne montre pas ce que je fais pour gérer les changements de valeur et tu as raison ça "marche" ; j'ai fait un test avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Option Explicit
    Dim Valeur As Variant
    Dim Ligne As Long
    Dim Colonne As Long
    Dim Message As String
     
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
        Valeur = Target.Value
        Ligne = Target.Row
        Colonne = Target.Column
        Message = "Valeur " & Valeur & " Li " & Ligne & " Co " & Colonne
        MsgBox Message, vbOKOnly, "Test Valeurs"
     
    End Sub
    Et j'ai bien ce que je voulais.

    Mais alors pourquoi les espions ne "voyaient" rien ?

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut

    Et on ne voit toujours pas ce que tu en fais, de ces variables gardées en mémoire !!

    Quoi qu'il en soit : tu as eu tout ce dont tu avais besoin dans mon message précédent.


    EDIT :
    Mais alors pourquoi les espions ne "voyaient" rien ?
    Devine ! (ce sera facile à deviner si tu lis très attentivement ce que j'ai écrit plus haut).
    L'espion ne voit que ce qu'il peut voir AU MOMENT où il "regarde", pardi.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Ouille ...!
    J'ai dit/fait une bêtise (sorti d'un trou pour aller dans un autre).
    Attends que je revienne des courses, s'il te plait.

  7. #7
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Citation Envoyé par Stan_fr Voir le message
    Le problème c'est que ça ne marche pas ??? (j'ai mis des espions sur Colonne, Ligne et Valeur : rien ne bouge).
    En complément de la réponse de Jacques (que je salue au passage), si tu n'as pas mis ce code dans le module de la feuille concernée, il ne risque pas de se déclencher...
    Pour accéder à ce module : Clic droit sur l'onglet de la feuille/visualiser le code.

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Franck

    A Stan_Fr :
    Réfléchissons ensemble ("ensemble" signifie "toi également") si tu veux bien . Prêt ? -->>
    l'évènement Change d'une feuille n'intervient que lorsque, ayant modifié la valeur d'une cellule, tu la quittes vers une autre ..
    Or, que se passe-t-il d'après toi lorsque tu entres dans une autre cellule ? --->> l'évènement SelectionChange se déclenche --->> tes variables "stockées" se modifient
    Et on peut tourner ainsi en rond, si l'on ne s'en mêle pas adroitement.
    Plusieurs solutions, dont celle-ci -->> exemple --->>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private toto
    Private ou As Range
    Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.Value <> "b" Then '----------------->> ici : tes vérifications à toi, hein ...
         Target.Value = toto
         ou.activate '------>>> en retournant à la cellule concernée, je déclenche le selectionchange et restitue ainsi ce qu'il faut
       end if
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       toto = Target.Value
       Set ou = Target
    End Sub
    Il va de soi que tu devrais par ailleurs limiter ce genre d' "intervention" aux seules cellules qui le nécessitent (mais je pense que çà, tu sais le faire).

Discussions similaires

  1. Récupérer la valeur d'une cellule avant sa modification
    Par Micke7 dans le forum Composants
    Réponses: 3
    Dernier message: 26/01/2016, 17h19
  2. Récupérer la valeur d'une cellule du tableur OOo
    Par manubrard dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 22/02/2006, 17h51
  3. [WebForms][DataGrid] Récupérer la valeur d'une cellule...
    Par elbj dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 12/12/2005, 14h00
  4. [C#] [Automation Word] Récupérer la valeur d'une cellule
    Par Ditch dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/06/2004, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo