Sub Importation_guide()
'Note 1 : Déclare les variables que tu utilises.
'Oui, mais les déclarer TOUTES est mieux --------------
Dim LD, LigneTicker 'la valeur par défaut est variant
Dim DateTravail As Date
Dim LigneDate As Long, LigneActif As Long
Application.ScreenUpdating = False
DateTravail = Workbooks(WORKBOOK_PROCEDURE_GUIDE).Sheets("Feuil1 ").Cells(42, 3).Value
'WORKBOOK_PROCEDURE_GUIDE : qu'est-ce que c'est ? là, ça ne peut être qu'une variable string.
'mais comme elle n'est pas initialisée dans le code, ça suppose une variable globale et
'pas assez d'informations fournies pour faire un code efficace --------------------
Workbooks(Data).Activate
Sheets(SHEET_TRAVAIL_DATA).Select
'même remarques que ci-dessus : Data ? SHEET_TRAVAIL_DATA ?
'le fait de selectionner peut aussi engendrer des problèmes suivant la localisation de la macro
Set LD = Range("A1:A10000").Find(DateTravail, LookIn:=xlFormulas, LookAt:=xlWhole)
If Not LD Is Nothing Then
LigneDate = LD.Row
Else
MsgBox "La date choisie dans la procédure n'existe pas encore dans l'onglet FSJ ACTIF T." & Chr(10) & _
"Veuilez s'il-vous-plait modifier en conséquence. Merci !", vbOKOnly + vbExclamation, "Erreur dans le choix de la date"
Sheets("Feuil1").Cells(42, 3).Value = 1
End If
'Comme je l'ai dis, pas assez d'infos sur l'algo de la macro.
'de plus, en cas de date non trouvée, [Data].'SHEET_TRAVAIL_DATA'C42=1 (ne pas tenir compte de la syntaxe)
'mais DateTravail reste la même ainsi que LigneDate qui reste à zéro, sans que la macro s'arrête
For i = 1 To 100
'pourquoi ne pas avoir déclaré i ?
Workbooks(Data).Activate
Sheets(SHEET_TRAVAIL_DATA).Select
'même remarque que précédemment
Ticker(i) = Cells(4, i).Value
Valeur(i) = Cells(LigneDate, i).Value
'On a 2 tableaux non déclarés, alors qu'on a 100 données
Workbooks(WORKBOOK_GUIDE).Activate
Sheets(SHEET_TRAVAIL_GUIDE).Select
'même remarque que ci-dessus
TickerRecherche = Ticker(i)
'Quel est le but de ce transfert dans une nouvelle variable ?
Set LigneTicker = Range("A1:A10000").Find(TickerRecherche, LookIn:=xlValues, LookAt:=xlWhole)
If Not LigneTicker Is Nothing Then
LigneActif = LigneTicker.Row
Else
MsgBox "Le ticker recherché n'existe pas." & Chr(10) & _
"Veuilez s'il-vous-plait modifier en conséquence. Merci !", vbOKOnly + vbExclamation, "Erreur dans la saisie de ticker"
End If
'"if not" alors qu'on utilise Else. pourquoi ne pas supprimer le Not et inversé les traitements Vrai/Faux ?
'Pareil, on prévient que ça va merder, mais on ne fait rien et on continue la macro
Cells(LigneActif, 5) = Valeur(i)
'Comme je ne sais pas ce qu'on attend, je prie pour qu'il y ait au moins une première ligne
Next i
End Sub