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 :

Pb de boucle en modifiant des cellules par un «*Worksheet.Change*» présent ds la même feuille


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ing Agro auto-entrepr
    Inscrit en
    Janvier 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Ing Agro auto-entrepr
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2020
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Pb de boucle en modifiant des cellules par un «*Worksheet.Change*» présent ds la même feuille
    Dans une feuille de calcul, la modification d’une cellule déclenche une macro automatique Private sub Worksheet_Change qui doit modifier la valeur d’ autres cellules de la même feuille. Problème : ça boucle et tourne en rond.
    Merci de votre aide.

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Essayez ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_Change(ByVal Target As Range)
        On Error GoTo Sortie
        Application.EnableEvents = False
     
        '*********************************************
     
        '     METTEZ VOTRE CODE ICI
     
        '*********************************************
     
    Sortie:
        Application.EnableEvents = True
    End Sub
    Cdlt

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ing Agro auto-entrepr
    Inscrit en
    Janvier 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Ing Agro auto-entrepr
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2020
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Bonsoir,
    Parfait... ça marche impeccable.
    Merci beaucoup, bonne soirée.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2023
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2023
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Bonjour.

    Tout d'abord, pouvez-vous m'indiquer si poster dans un topic résolu est une bonne pratique si le sujet est identique ?


    Je souhaiterai que vous confirmiez ou non mon analyse du problème rencontré.
    J'ai un tableau colonnes paires des dates, colonnes impaires les dates s'inscrivent majorées d'un périodicité.

    Lorsque j'utilise "worksheet_selectionchange" cela fonctionne très bien.
    Sauf, que la macro se déclenche par une simple sélection d'une cellule (d'où son nom).

    Mais lorsque j'utilise "worksheet_change", je perds l'accès au fichier (avantage, excel se ferme tout seul )


    Bon, je poste la macro (partielle seulement pour les 2 premières colonnes)
    ne soyez pas trop dur, svp

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
       Option Explicit
        Option Compare Text
     
    'Private Sub Worksheet_Change(ByVal Target As Range)
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
        Application.ScreenUpdating = False
    '-------------------------------------------------------------------------------------------------
    'DEFINTION DES VARIABLES GÉNÉRALES
        Dim prem_lig As Integer, expi_lig As Integer, der_lig As Integer, der_col As Integer
        prem_lig = 4
        expi_lig = 2
    '    der_lig = 32
        der_lig = Range("A" & Rows.Count).End(xlUp).Row
        der_col = Cells(1, Columns.Count).End(xlToLeft).Column
    '-------------------------------------------------------------------------------------------------
    'DÉFINITION DES VALEURS SPÉCIFIQUES
        Dim col_e As Range, col_f As Range, col_g As Range, col_h As Range, col_j As Range, col_k As Range
        Set col_e = Range(Cells(prem_lig, 5), Cells(der_lig, 5))
     
        Dim exp_f As Integer, exp_h As Integer, exp_k As Integer
        exp_f = Cells(expi_lig, 6)
    '-------------------------------------------------------------------------------------------------
    'ColonneF()
        For Each col_f In col_e
                col_f.Offset(0, 1).ClearContents
            If IsDate(col_f.Value) Then
                col_f.Offset(0, 1).Formula = DateAdd("m", exp_f, col_f)
                If col_f.Offset(0, 1).Value < Date Then
                    col_f.Offset(0, 1).Font.Color = RGB(192, 0, 0)
                    Else
                End If
            Else
                If IsEmpty(col_f.Value) Then
                col_f.Interior.Color = RGB(255, 255, 255)
                Else
                col_f.Offset(0, 1).Value = col_f.Offset(0, 0).Value
               End If
            End If
        Next col_f
    '-------------------------------------------------------------------------------------------------
       Debug.Print der_lig
       Debug.Print "mise à jour effectuée"
    '-------------------------------------------------------------------------------------------------
    End Sub
    Donc, est ce que le fait d'effacer la cellule et ainsi de forcer le "re-calcul" provoque ce dysfonctionnement ?

    ps: l'utilisation de "Range("A" & Rows.Count).End(xlUp).Row" provoque aussi un dysfonctionnement avec "change" mais pas avec "selectionchange".

    Merci à vous par avance.
    Steph

  5. #5
    Membre averti Avatar de Nain porte koi
    Homme Profil pro
    a
    Inscrit en
    Novembre 2023
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : a

    Informations forums :
    Inscription : Novembre 2023
    Messages : 258
    Points : 345
    Points
    345
    Par défaut
    Citation Envoyé par Steph_L Voir le message
    Bonjour.

    Tout d'abord, pouvez-vous m'indiquer si poster dans un topic résolu est une bonne pratique si le sujet est identique ?
    Bien que ressemblant il vaut mieux que vous créiez votre propre sujet car la solution n'est pas forcément la même
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2023
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2023
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    C'est noté.

    Merci à vous.
    Steph

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplir des cellules par 0
    Par eddyG dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 01/10/2007, 15h13
  2. Compte des cellules par couleur
    Par Tiresia dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 12/06/2007, 00h45
  3. Modifier des images par programmation : C ou Flash ou ?
    Par R.L. dans le forum Développement 2D, 3D et Jeux
    Réponses: 7
    Dernier message: 11/05/2007, 15h17
  4. [VBA] Modifier des cellules excel en fonction de leur couleur
    Par Tententai dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/03/2007, 18h14
  5. Réponses: 4
    Dernier message: 30/05/2006, 17h21

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