VBA pour transférer des valeurs d'un tableau à l'autre Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
Avatar du membre
Camaalot
Jeune membre
Jeune membre
Messages : 30
Inscrit le : 22 décembre 2017
Version d'Excel : 2013

Message par Camaalot » 14 avril 2018, 23:26

Bonjour,

J'ai écrit ce petit VBA qui permet de transférer des valeurs d'un compte à l'autre.
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
Virements comptes test.xlsm
(59.09 Kio) Téléchargé 3 fois
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 4'019
Appréciations reçues : 306
Inscrit le : 26 janvier 2011
Version d'Excel : 2007/2019

Message par Theze » 15 avril 2018, 08:44

Bonjour,

Je suppose que c'est parce que tu limites les colonnes :
If Target.Column <> 7 And Target.Column <> 9 And Target.Column <> 19 And Target.Column <> 21 Then Exit Sub
Mets cette ligne en commentaire et fais un test !
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
Avatar du membre
Camaalot
Jeune membre
Jeune membre
Messages : 30
Inscrit le : 22 décembre 2017
Version d'Excel : 2013

Message par Camaalot » 16 avril 2018, 03:51

Bonjour Theze,

Tu as tout à fait raison.
Après avoir pris un pas de recul, j'ai bien vu qu'il manquait des colonnes.
Alors, j'ai rectifié avec :
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
  • Sujets similaires
    Réponses
    Vues
    Dernier message