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.

vba block

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
    Next

En 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
    Next

Merci Eric, c'est exactement ce que je souhaitais !

Rechercher des sujets similaires à "mise jour champ existant"