Bonjour à tous, j'ai déjà pas mal utilisé ce forum pour trouver des solutions à mes problèmes sur VBA, et cette fois-ci c'est moi qui écrit ...!

J'ai voulu modifier une de mes macros avec un code que je pensais simple mais je n'arrive pas à le faire fonctionner correctement...
Je veux bien de votre aide si le cœur vous en dit ...

* Mon code complet permet d'aller remplir un onglet précis d'un fichier choisit, il fonctionne très bien sans ajouts des quelques lignes de codes
Il fonctionne avec un Boolean (Si faux, prends les valeurs et remplit le fichier de destination // Si vrai, passe au suivant)


J'ai voulu rajouter une petite complexité en encastrant un If dans un autre If mais cela ne fonctionne pas
Pour faire simple, selon les 2 premières lettres de ma référence, je veux faire correspondre un type de contrat (Exemple, référence AL000001 commence par "AL" donc le type de contrat est LOA)


Voici la section qui pose problème : (quelques variables ont été définies plus haut)
Les rajouts qui coincent :

Valcell (ligne 6)
Ligne 17 à 27
Ligne 39

Merci beaucoup !




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
Sheets("sheet1").Select                 'Selectionne la feuille "sheet1"
 
Dim L As Long
L = Sheets("sheet1").Range("A1048576").End(xlUp).Row
 
Dim datecycle As Date, client As String, montant As Double, ref As String, transmis As Boolean, Valcell As String    'Définit les variables
 
    For i = 2 To L
        transmis = Sheets("sheet1").Range("N" & i).Value     'Vérifie si la valeur de la cellule de la colonne N est égale à VRAI ou FAUX
 
        If transmis = False Then                        'Si FAUX, stocke les valeurs des cellules des colonnes C,A et I et G dans les variables
            datecycle = Sheets("sheet1").Range("C" & i).Value
            client = Sheets("sheet1").Range("A" & i).Value
            montant = Sheets("sheet1").Range("I" & i).Value
            ref = Sheets("sheet1").Range("G" & i).Value
 
                If Left(ref.Value, 2) = "AL" Then
                    Valcell.Value = "LOA"
                ElseIf Left(ref.Value, 2) = "AC" Then
                    Valcell.Value = "Crédit"
                ElseIf Left(ref.Value, 2) = "AF" Then
                    Valcell.Value = "LLD"
                ElseIf Left(ref.Value, 2) = "AD" Then
                    Valcell.Value = "Collab Toy (autre)"
                Else
                    Valcell.Value = "Non défini"
                End If
 
            Workbooks(fichier_destination).Activate        'Active le fichier de destination
            Sheets(onglet_destination).Select
 
            Dim L2 As Long
            L2 = Sheets(onglet_destination).Range("A1048576").End(xlUp).Row + 1   'Définit la dernière ligne du sheet1
 
            Sheets(onglet_destination).Range("C" & L2).Value = datecycle         'Renseigne les valeurs des variables dans les cellules correspondantes
            Sheets(onglet_destination).Range("B" & L2).Value = client
            Sheets(onglet_destination).Range("D" & L2).Value = montant
            Sheets(onglet_destination).Range("A" & L2).Value = ref
            Sheets(onglet_destination).Range("E" & L2).Value = Valcell
 
            Workbooks(monfichier).Activate    'Active le fichier source
            Sheets("sheet1").Select
            Sheets("sheet1").Range("N" & i).Value = True
 
    Else
        GoTo suivant   'Si c'est pas FAUX (VRAI), passe à la ligne suivante
 
    End If
 
suivant:
    Next i