Bonjour,

Je commence à faire des macros sur Excel et je me heurte à un problème de compatibilité dans mon code.

L'erreur intervient à la ligne en rouge.

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
Sub import()
    'création des variables
    Dim i As Integer
    Dim x As Integer
    Dim y As Integer
    
    'Préparation de la cellules vide pour la copie des données
    Range("B20000").Select
    Selection.End(xlUp).Select
    ActiveCell.Offset(1, 0).Select
    x = ActiveCell.Row
    
    'On va charcher les données dans le fichier Export et on les copie à partir de la cellule vide
    Workbooks.Open Filename:="C:\Users\omu\Desktop\export.XLSX"
    Range("A2:Y1000").Select
    Selection.Copy
    Windows("XXX-Pilotage IP v5 - vba.xlsm").Activate
    ActiveSheet.Paste
    
    'On vide le press papier
    Application.CutCopyMode = False
    Windows("export.XLSX").Activate
    ActiveWindow.Close
    
    Selection.End(xlDown).Select
    y = ActiveCell.Row
    
    'on écrit une formule dans chaque case de la colonne "A" pour chaque ligne copiée/collée
    For i = x To y
        
        Cells(i, 1).FormulaLocal = "=SI(ESTVIDE(" & Cells(i, 19) & ");ANNEE(C:C)" & "" - "" & "MOIS(C:C);ANNEE(S:S)" & "" - "" & "MOIS(S:S))"
    Next
    
End Sub
Le problème survient quand je met le fonction Cells(i, 19) ou bien Range("S" + i) dans la formule. Je pense que le problème viens du type de la variable "i". Alors j'ai essayé de la convertir la variable i de type Integer en String et de ranger le résultat dans une variable de type String mais aucun résultat concluant. Je vous met en dessous comment j'ai essayé de transformer l'entier en chaine de caractères (variable z).

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
Sub import()
    'création des variables
    Dim i As Integer
    Dim x As Integer
    Dim y As Integer
    Dim z As String
    
    'Préparation de la cellules vide pour la copie des données
    Range("B20000").Select
    Selection.End(xlUp).Select
    ActiveCell.Offset(1, 0).Select
    x = ActiveCell.Row
    
    'On va charcher les données dans le fichier Export et on les copie à partir de la cellule vide
    Workbooks.Open Filename:="C:\Users\omu\Desktop\export.XLSX"
    Range("A2:Y1000").Select
    Selection.Copy
    Windows("XXX-Pilotage IP v5 - vba.xlsm").Activate
    ActiveSheet.Paste
    
    'On vide le press papier et on ferme le fichier "export"
    Application.CutCopyMode = False
    Windows("export.XLSX").Activate
    ActiveWindow.Close
    
    Selection.End(xlDown).Select
    y = ActiveCell.Row
    
    'on écrit une formule dans chaque case de la colonne "A" pour chaque ligne copiée/collée
    For i = x To y
        
        z = CStr(i)
        Cells(i, 1).FormulaLocal = "=SI(ESTVIDE(" & Cells(z, 19) & ");ANNEE(C:C)" & "" - "" & "MOIS(C:C);ANNEE(S:S)" & "" - "" & "MOIS(S:S))"
    Next
    
End Sub
Dans l'idéal si je viens sur ce forum c'est pour avoir une solution pour mon problème mais avant tous j’aimerai comprendre ou je me suis trompé et savoir ce que je dois faire et me poser les bonnes questions pour ne pas ré-itérer la même erreur.

Comme c'est la première fois que je poste un sujet sur ce forum n'hésitez pas à me demander des éclaircissement de mes explications si jamais ce n'est pas clair.

Je vous remercie de votre compréhension,

Axel / La_raclette