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 :

Changer les valeurs de la même ligne que la cellule qu'on modifie [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 66
    Par défaut Changer les valeurs de la même ligne que la cellule qu'on modifie
    Bonjour,

    J'ai un tableau qui se remplit grâce à une série de contraintes. Et dès que je change une valeur dans une cellule, cela change dans les autres autres colonnes calculées via le code mais le problème c'est que à chaque fois c'est tout le tableau qui est recalculé alors que je voudrais uniquement la ligne où je modifie les valeurs.

    Je voudrais que quand je change une valeur dans l'encadré 1, cela change uniquement les valeurs de l'encadré 2 (qui je le rappelle se calcul grace à un code sous VBA) . Pour l'instant quand je change une valeur dans l'encadrée 1, cela change tout le tableau de droite donc cela fait ramer Excel.

    Je vous montre ci-dessous :

    Nom : chgmt lignes.jpeg
Affichages : 96
Taille : 107,3 Ko


    Merci pour votre aide

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,

    qui je le rappelle se calcul grace à un code sous VBA
    Publies ton code
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 66
    Par défaut
    Voila le code

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
     
    Dim x As Integer, last_line As Integer
     
    last_line = Cells(Rows.Count, 1).End(xlUp).Row
     
    If Not Intersect(Target, Range(Cells(13, 7), Cells(last_line, 9))) Is Nothing Then
     For i = 13 To last_line
     
     Points = 0
     points_sauvegardés = 0
     points_non_sauvegardés = 0
     propres_points = Feuil2.Cells(i, 9)
     points_accordés = Feuil2.Cells(i, 8)
     point_de_sauvegarde = Feuil2.Cells(i, 7)
     points_suspendus = 0
     
     
     
        If propres_points <= points_accordés Then
            Points = propres_points
            points_sauvegardés = Points
            If Points > point_de_sauvegarde Then
                points_sauvegardés = point_de_sauvegarde
                points_non_sauvegardés = propres_points - point_de_sauvegarde
                Points = points_sauvegardés + points_non_sauvegardés
            End If
        Else
           'propres_points >points_accordés
            If propres_points > point_de_sauvegarde Then
                If points_accordés > point_de_sauvegarde Then
                    points_sauvegardés = point_de_sauvegarde
                    points_non_sauvegardés = points_accordés - points_sauvegardés
                    Points = points_sauvegardés + points_non_sauvegardés
                End If
                If points_accordés <= point_de_sauvegarde Then
                    points_sauvegardés = points_accordés
                    points_non_sauvegardés = 0
                    Points = points_sauvegardés + points_non_sauvegardés
                End If
            End If
            If propres_points <= point_de_sauvegarde Then
                points_sauvegardés = propres_points
                points_non_sauvegardés = 0
                Points = points_sauvegardés + points_non_sauvegardés
            End If
        End If
     
        If propres_points > Points Then
            points_suspendus = propres_points - Points
        Else
            points_suspendus = 0
        End If
     
    Feuil2.Cells(i, 10) = Points
    Feuil2.Cells(i, 11) = points_sauvegardés
    Feuil2.Cells(i, 12) = points_non_sauvegardés
    Feuil2.Cells(i, 13) = points_suspendus
     
    Next i
    End If
     
    End Sub

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    je pense, sans analyser ton code plus en profondeur qu'il suffit d'éliminer la boucle et remplacer i par Target.Row, je répète, j'écris ça à vue de nez
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
     
    Dim x As Integer, last_line As Integer
     
    last_line = Cells(Rows.Count, 1).End(xlUp).Row
     
    If Not Intersect(Target, Range(Cells(13, 7), Cells(last_line, 9))) Is Nothing Then
     
     Points = 0
     points_sauvegardés = 0
     points_non_sauvegardés = 0
     propres_points = Feuil2.Cells(Target.Row, 9)
     points_accordés = Feuil2.Cells(Target.Row, 8)
     point_de_sauvegarde = Feuil2.Cells(Target.Row, 7)
     points_suspendus = 0
     
     If propres_points <= points_accordés Then
            Points = propres_points
            points_sauvegardés = Points
            If Points > point_de_sauvegarde Then
                points_sauvegardés = point_de_sauvegarde
                points_non_sauvegardés = propres_points - point_de_sauvegarde
                Points = points_sauvegardés + points_non_sauvegardés
            End If
        Else
           'propres_points >points_accordés
            If propres_points > point_de_sauvegarde Then
                If points_accordés > point_de_sauvegarde Then
                    points_sauvegardés = point_de_sauvegarde
                    points_non_sauvegardés = points_accordés - points_sauvegardés
                    Points = points_sauvegardés + points_non_sauvegardés
                End If
                If points_accordés <= point_de_sauvegarde Then
                    points_sauvegardés = points_accordés
                    points_non_sauvegardés = 0
                    Points = points_sauvegardés + points_non_sauvegardés
                End If
            End If
            If propres_points <= point_de_sauvegarde Then
                points_sauvegardés = propres_points
                points_non_sauvegardés = 0
                Points = points_sauvegardés + points_non_sauvegardés
            End If
        End If
     
        If propres_points > Points Then
            points_suspendus = propres_points - Points
        Else
            points_suspendus = 0
        End If
     
    Feuil2.Cells(Target.Row, 10) = Points
    Feuil2.Cells(Target.Row, 11) = points_sauvegardés
    Feuil2.Cells(Target.Row, 12) = points_non_sauvegardés
    Feuil2.Cells(Target.Row, 13) = points_suspendus
     
    End If
     
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 66
    Par défaut
    Eh bien tu as une bonne vue ahah
    ça à l'air de bien fonctionner !

    Merci beaucoup

  6. #6
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 66
    Par défaut
    En fait, il reste un petit problème mineur mais bien embêtant quand même. Il m'arrive parfois, au lieu de rentrer une valeur pas une valeur dans les cellules, de faire un copier coller d'une rangée de cellules mais la c'est le drame ^^ les calcules ne s'effectuent pas automatiquement. En fait, le calcul se fait juste pour la ligne où je fais le clique droit et copier coller mais pour les lignes en dessous rien ne se passe ... :/

    Avez vous une idée ?

    Merci d'avance

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

Discussions similaires

  1. [XL-2003] Formulaire, copier une textbox dans la même ligne que les autres
    Par jbelleng dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/08/2011, 13h25
  2. moyenne sur les valeurs d'un même tableau
    Par DelphLaga dans le forum Langage
    Réponses: 12
    Dernier message: 25/09/2006, 11h35
  3. Voir tout les onglets sur une même ligne
    Par bnreb10 dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 09/08/2006, 11h08
  4. comparer les valeurs d'un même tableau
    Par DelphLaga dans le forum Langage
    Réponses: 11
    Dernier message: 19/07/2006, 14h32
  5. Réponses: 1
    Dernier message: 30/06/2006, 10h26

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