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 :

VBA pour transférer des valeurs d'un tableau à l'autre [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Par défaut VBA pour transférer des valeurs d'un tableau à l'autre
    Bonjour,

    J'ai écrit ce petit VBA qui permet de transférer des valeurs d'un compte à l'autre.

    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    Option Explicit
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim chqLR As Long, savLR As Long, celLR As Long, marLR As Long
     
     
    If Target.Row < 6 Or Target.Row > 102 Then Exit Sub
    If Target.Column <> 7 And Target.Column <> 9 And Target.Column <> 19 And Target.Column <> 21 Then Exit Sub
     
    Application.EnableEvents = False
     
    chqLR = Range("C" & 102).End(xlUp).Row
    savLR = Range("Q" & 102).End(xlUp).Row
    celLR = Range("AC" & 102).End(xlUp).Row
    marLR = Range("AO" & 102).End(xlUp).Row
     
    If Target.Column = 7 Or Target.Column = 9 Then
        If UCase(Range("G" & Target.Row)) = UCase("Virement Chèque-Épargne") _
           And Range("I" & Target.Row) <> "" Then
                Range("Q" & savLR + 1) = Range("C" & Target.Row)
                Range("S" & savLR + 1) = Range("G" & Target.Row)
                Range("W" & savLR + 1) = Range("i" & Target.Row)
        End If
    End If
     
    If Target.Column = 19 Or Target.Column = 21 Then
        If UCase(Range("S" & Target.Row)) = UCase("Virement Épargne-Chèque") _
           And Range("U" & Target.Row) <> "" Then
                Range("C" & chqLR + 1) = Range("Q" & Target.Row)
                Range("G" & chqLR + 1) = Range("S" & Target.Row)
                Range("K" & chqLR + 1) = Range("U" & Target.Row)
        End If
    End If
     
    If Target.Column = 7 Or Target.Column = 9 Then
        If UCase(Range("G" & Target.Row)) = UCase("Virement Chèque-Céli") _
           And Range("I" & Target.Row) <> "" Then
                Range("AC" & celLR + 1) = Range("C" & Target.Row)
                Range("AE" & celLR + 1) = Range("G" & Target.Row)
                Range("AI" & celLR + 1) = Range("I" & Target.Row)
        End If
    End If
     
    If Target.Column = 31 Or Target.Column = 33 Then
        If UCase(Range("AE" & Target.Row)) = UCase("Virement Céli-Chèque") _
           And Range("AG" & Target.Row) <> "" Then
                Range("C" & chqLR + 1) = Range("AC" & Target.Row)
                Range("G" & chqLR + 1) = Range("AE" & Target.Row)
                Range("K" & chqLR + 1) = Range("AG" & Target.Row)
        End If
    End If
     
    If Target.Column = 7 Or Target.Column = 9 Then
        If UCase(Range("G" & Target.Row)) = UCase("Virement Chèque-Marge") _
           And Range("I" & Target.Row) <> "" Then
                Range("AO" & celLR + 1) = Range("C" & Target.Row)
                Range("AQ" & celLR + 1) = Range("G" & Target.Row)
                Range("AU" & celLR + 1) = Range("i" & Target.Row)
        End If
    End If
     
    If Target.Column = 43 Or Target.Column = 45 Then
        If UCase(Range("AQ" & Target.Row)) = UCase("Virement Marge-Chèque") _
           And Range("AS" & Target.Row) <> "" Then
                Range("C" & marLR + 1) = Range("AO" & Target.Row)
                Range("G" & marLR + 1) = Range("AQ" & Target.Row)
                Range("K" & marLR + 1) = Range("AS" & Target.Row)
        End If
    End If
     
    Application.EnableEvents = True
    End Sub
    Le problème que je ne comprends pas c'est :
    Pourquoi est-ce ce que j'arrive à transférer des valeurs de compte chèque à Épargne, vice versa mais je peux que transférer des valeurs du compte chèque à Céli et compte chèque à Marge et pas le contraire, soit Céli à Chèque et Marge à Chèque ?

    Aussi, deuxième question :
    Pourquoi les premières valeurs inscrites dans Marge de crédit apparaissent dans AO9 au lieu de AO7 ?

    Merci pour vos réponse. Ce projet est important pour moi.

    Camaalot
    Fichiers attachés Fichiers attachés

  2. #2
    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
    1) Je n'ouvre jamais un classeur tiers et n'ai donc pas ouvert le tien.
    2) l'exposé de ton problème et le code montré ne permettent pas de cerner avec assurance la cause de ta difficulté, mais ma première réaction est celle-ci :
    l'évènement change d'une feuille intervient non seulement lorsque l'utilisateur saisit, mais également lorsque la valeur d'une cellule est modifiée dynamiquement. Il est probable que cet état de choses soit le "responsable". Le suivi pas à pas du déroulement devrait te permettre d'y voir beaucoup plus clair.

    EDIT : j'appelle par ailleurs de toutes manières ton attention, s'agissant d'opérations comptables, sur la dangerosité d'utiliser l'évènement Change pour déclencher des opérations. Les raisons en sont parmi d'autres les suivantes :
    - cet évènement intervient lors de toute correction, y compris si l'utilisateur ressaisit à l'identique
    - à moins que le résultat d'un "transfert" ne figure très exactement sur la même ligne que celle de sa cause, la suppression éventuelle de la cause aura des effets pour le moins surprenants
    (et ce n'est pas tout).

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Par défaut
    Bonjour,

    Merci pour tes conseils, j'en tiendrai compte.

    La solution à mon problème était toute simple.
    J'avais seulement oublié de bien déclarer toutes les colonnes.
    Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Column <> 7 And Target.Column <> 9 And Target.Column <> 19 And Target.Column <> 21 And Target.Column <> 31 And Target.Column <> 33 And Target.Column <> 43 And Target.Column <> 45 Then Exit Sub
    Merci et bonne journée,

    Camaalot

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/02/2017, 17h56
  2. [XL-2010] [Créer une VBA pour chercher des valeurs]
    Par nat8546 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/06/2016, 16h53
  3. [XL-2000] VBA pour sommer des valeures entre deux dates (nombreuses données)
    Par maxhor dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/04/2014, 18h30
  4. Code VBA pour filtrer des valeurs dans un tcd
    Par dimitri70 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 25/09/2013, 11h53
  5. Problème pour forcer des valeurs d'un tableau
    Par n][co dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 25/04/2007, 21h59

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