Mise à jour d'un champ existant
Bonjour,
voila plusieurs années que j'utilisais Pyton dans mon dev professionnel, mais la je bloque car je dois écrire une macro afin de mettre à jour automatiquement les cellules de ma feuille. Ces mises à jour proviennent d'un fichier csv que je récupére et que j'ajoute au bas de ma feuille (déjà fait et fonctionnel).
Une fois cette import, certaines lignes se retrouvent donc en doublon identifiée "new value" (déjà fait et fonctionnel).
En cas de doublon, l'idée est d'écraser la date du last call d'original (celulle E5) avec la nouvelle Date importée (celulle E6).
Ex: M.Blue
J'arrive à identifier les doublons et à recupérer la valeur de la date du dernier appel, mais je n'arrive pas l'attribuer lors de ma 2nd boucle.
Voila mon code.
Dim myArray_Date() As Variant
ReDim myArray_Date(20)
Dim myArray_Phone() As Variant
ReDim myArray_Phone(20)
'For loop to identify duplicate & retrieve the new dates
For iCntr = 3 To 20
'checking if the cell is having any item, skipping if it is blank.
If Worksheets(1).Cells(iCntr, 3) <> "" Then
'getting match index number for the value of the cell
matchFoundIndex = Application.Match(Worksheets(1).Cells(iCntr, 3), Worksheets(1).Range("C1:C20"), 0)
'if the match index is not equals to current row number, then it is a duplicate value
If iCntr <> matchFoundIndex Then
'I append to a table the phone and to another one the last call
myArray_Phone(iCntr) = Worksheets(1).Cells(iCntr, 3).Value
myArray_Date(iCntr) = Worksheets(1).Cells(iCntr, 5).Value
'MsgBox Title:="Task Box", Prompt:="La j'arrive a bien les récupérer: " & myArray_Phone(iCntr) & " et la date: " & myArray_Date(iCntr)
End If
End If
Next
'2nd boucle pour ajouter les nouvelles dates aux tél existants, c'est la que ca foire
For iCntr = 3 To 20
If Worksheets(1).Cells(iCntr, 3) <> "" Then
If IsInArray(Worksheets(1).Cells(iCntr, 3), myArray_Phone) Then
Worksheets(1).Cells(iCntr, 5) = myArray_Date(iCntr)
End If
End If
NextEn fait je ne sais pas si je dois faire 2 tables distincts, ou un tableau a 2 dimensions, sachant qu'ensuite j'appelle la foncion IsInArray qui malheureusement ne fonctionne pas avec un tableau a plusieurs dimensions.
Merci pour aide et vos idées.
Bonjour,
A tester :
For iCntr = 20 To 3 Step -1
With Worksheets(1)
If .Cells(iCntr, 3) = .Cells(iCntr - 1, 3) And .Cells(iCntr, 4) <> "" Then
.Cells(iCntr - 1, 5) = .Cells(iCntr, 5)
End If
End With
NextMerci Eric, c'est exactement ce que je souhaitais !