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.

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

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 !

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

Rechercher des sujets similaires à "vba transferer valeurs tableau"