Problèmes de Range, tentative de boucle entre 2 fichiers
Après mes 3 premiers jours de codage je suis encore novice en VBA mais je me soigne
Je souhaite exécuter une macro me permettant, depuis un fichier maitre avec tous mes compteurs, de consulter dans un fichier de relève avec seulement quelques compteurs la correspondance entre ces 2 fichiers des numéros de compteurs et lorsqu'un compteur est identique entre les 2 fichiers, récupérer la valeur du relevé dans la colonne "RELEVE" du fichier de relève et la mettre dans la colonne "MOIS" du fichier des index (le fichier maitre)
J'ai opéré plusieurs tentatives mais toutes échouent lors de ma condition "If"
Vous constaterez dans le code toutes les différentes tentatives effectuées... Et les différents messages d'erreurs associés.
Je cale.
Petit coup de main ?
Précision : lorsque je fais appel à ma variable "MOIS" cela peut correspondre à plusieurs choses nommées de la même façon dans un esprit de simplicité. A savoir :
- Les worksheets du fichier de relève
- L'objet tableau dans ce Worksheet
- Le nom de la colonne de l'objet tableau du fichier maître
'Workbooks.Open Filename:= _
"S:\DSTG\STL\SAG\LOT3_EAU\2023\03_EXPLOITATION ET MAINTENANCE\6_Relevé mensuel_compteurs\TEST µ\Stock Fichiers de Relève\Relève des compteurs à Intégrer.xlsx"
'Worksheets(MOIS).Activate
' Ignorer les erreurs
'On Error Resume Next
Dim MOIS As String
MOIS = MonthName(Month(Date))
MOIS1 = MonthName(Month(Date) - 1)
Dim Wbk_Index As Workbook
Set Wbk_Index = Workbooks("2023_Index Compteurs Annuel - Copie.xlsm")
Dim Ws_Index As Worksheet
Set Ws_Index = Wbk_Index.Worksheets("Relevés Compteurs")
Dim NumComptIndex As Range
Set NumComptIndex = Ws_Index.ListObjects("Index_Compteurs").ListColumns("N° COMPTEUR PHYSIQUE").Range
Dim IndexMois As Range
Set IndexMois = Ws_Index.ListObjects("Index_Compteurs").ListColumns(MOIS).Range
Dim Wbk_Releve As Workbook
Set Wbk_Releve = Workbooks("Relève des Compteurs à intégrer.xlsx")
'Set Wbk_Releve = Application.Workbooks.Open("S:\DSTG\STL\SAG\LOT3_EAU\2023\03_EXPLOITATION ET MAINTENANCE\6_Relevé mensuel_compteurs\TEST µ\Stock Fichiers de Relève\Relève des compteurs à Intégrer.xlsx")
Dim Ws_Releve As Worksheet
Set Ws_Releve = Wbk_Releve.Worksheets(MOIS)
Dim NumComptReleve As Range
'Set NumComptReleve = Ws_Releve.Cells("C2:C").SpecialCells(xlConstants)
'Set NumComptReleve = Ws_Releve.Cells(Rows.Count, 3).End(xlUp).Row
Set NumComptReleve = Ws_Releve.ListObjects(MOIS).ListColumns("N° COMPTEUR PHYSIQUE").Range
Dim IndexReleve As Range
'Set IndexReleve = Ws_Releve.Cells("E2:E").SpecialCells(xlConstants)
'Set IndexReleve = Ws_Releve.Cells(Rows.Count, 5).End(xlUp).Row
Set IndexReleve = Ws_Releve.ListObjects(MOIS).ListColumns("RELEVE").Range
For Each NumComptReleve In NumComptIndex
'If NumComptReleve.Cells.Value = NumComptIndex.Cells.Value Then _
'Argument ou appel de procédure incorrecte
'If Ws_Releve.Cells(NumComptReleve).Value = Ws_Index.Cells(NumComptIndex).Value Then _
'la méthode range de l'objet _Worksheet a échoué
If Ws_Releve.Range(NumComptReleve).Value = Ws_Index.Range(NumComptIndex).Value Then _
'la méthode range de l'objet _global a échoué
'If Ws_Releve.Cells(Range(NumComptReleve)).Value = Ws_Index.Cells(Range(NumComptIndex)).Value Then _
Ws_Index.Cells(IndexMois).Value = Ws_Releve.Cells(IndexReleve).Value
End If
NextBonjour petit nouveau et
Malheureusement, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER] et notamment :
- Ne postez pas la même question sur un autre forum pour éviter de faire perdre bêtement du temps aux membres sur un problème qui peut être déjà résolu sur l'autre forum. L'inverse est également valable, si vous avez déjà posé votre question sur un autre forum, ne créez pas un doublon sur ce forum (à moins d'avoir clôturé le sujet sur l'autre forum).
Merci de clôturer sur l'une des 2 forums SVP
Et merci de votre compréhension et de votre participation