Fonction Vlookup et memoire dans un fichier

Bonjour, je débute en excel et j'ai besoins de faire une macro qui s’exécute au remplissage d'une case et qui rempli automatiquement les cases dans une autre colonne puis qui change une case qui sert de mémoire pour effectuer cette recherche qu'une seule fois par enregistrement, en effet la fréquence pouvant changer entre deux enregistrements, la case fréquence peux être modifié manuellement, mais les enregistrements précédent doivent rester enregistrés avec la norme du jour de leur enregistrement, malheureusement aprs plusieurs essais je n'y arrive pas et je bloque , je joint le fichier si une âme charitable veux bien m'aider SVP, je precise que je n'ai pas encore mis la fonction de démarrage de la macro au remplissage d'une case je n'y suis pas arrivé.

Bonjour,

proposition d'adaptation de ton code

Sub NormeAutoVP2017()
'
'  Remplissage automatique des normes pour chaque ligne de chaque enregistrement si une date est rentrée 
'  sur la case date de chaque enregistremen et et mémorisation avec un 2 dans les cases des colonnes BD à BI 
'  que la norme a été réglée pour chaque enregistrement pour qu'elle ne soit pas modifiée plus tard lors de l'exécution 
'  de la macro pour les enregistrements futurs si on change la valeur dans la colonne H sauf si on remet la mémoire à 0 
'  manuellement en cas de besoin

    Dim i As Long, col As Long

    With Sheets("VP 2017")
        For i = .Range("BC2").Value To .Range("BC2").Value + .Range("BC1").Value
            If .Cells(i, 8) <> "" Then
                norme = Application.WorksheetFunction.VLookup(.Cells(i, 8), .Range("BX5:BY7"), 2, False)
            End If
            For col = 1 To 6
                If Not IsEmpty(.Cells(i, 10 + col * 6)) Then
                    If .Cells(i, 55 + col) <> 2 Then 'mise à jour déjà effectuée ?
                        .Cells(i, 55 + col) = 2
                        .Cells(i, 13 + col * 6) = norme
                    End If
                End If
            Next col
        Next i
    End With
End Sub

Bonjour, merci de m'avoir répondu, malheureusement votre code ne fonctionne pas, et je ne peu pas tenter de le corriger car de plus je ne le comprends pas.

Bonjour,

voici une adaptation de ton code (écriture moins simplifiée par rapport à ma proposition précédente). sur base de ce que j'ai compris qu'il fallait faire.

à savoir

parcourir toutes les lignes (ligne 6 à 206)

pour chaque ligne

parcourir les colonnes 16,22,28,34,40,46

si ces colonnes ne sont pas vides et qu'il n'y a pas un 2 dans la colonne 56, puis 57, ...

mettre la norme en colonne 19, puis 23, ...

mettre 2 en colonne 56, puis 57, ... pour indiquer que la mise à jour a été faite

c'est ce que font les 2 codes que j'ai proposés (à savoir le code ci-dessus et le code ci-dessous).

Sub NormeAutoVP2017()
'
'  Remplissage automatique des normes pour chaque ligne de chaque enregistrement si une date est rentrée sur la case date de chaque enregistremenet et mémorisation avec un 2 dans les cases des colonnes BD à BI que la normes à été réglé pour chaque enregistrement pour qu'elle ne soit pas modifiée plus tard lors de l'execution de la macro pour les enregistrement futurs si on change la valeur dans la colonne H sauf si on remets la mémoire à 0 manuellement en cas de besoins
    Dim i As Integer

    With Sheets("VP 2017")
        For i = .Range("BC2").Value To .Range("BC2").Value + .Range("BC1").Value
            If Not IsEmpty(Cells(i, 16)) And .Cells(i, 56) <> 2 Then
                .Cells(i, 19) = Application.WorksheetFunction.VLookup(.Cells(i, 8), .Range("BX5:BY7"), 2, False)
                .Cells(i, 56) = 2
            End If
            If Not IsEmpty(Cells(i, 22)) And .Cells(i, 57) <> 2 Then
                .Cells(i, 25) = Application.WorksheetFunction.VLookup(.Cells(i, 8), .Range("BX5:BY7"), 2, False)
                .Cells(i, 57) = 2
            End If
            If Not IsEmpty(Cells(i, 28)) And .Cells(i, 58) <> 2 Then
                .Cells(i, 31) = Application.WorksheetFunction.VLookup(.Cells(i, 8), .Range("BX5:BY7"), 2, False)
                .Cells(i, 58) = 2
            End If
            If Not IsEmpty(Cells(i, 34)) And .Cells(i, 59) <> 2 Then
                .Cells(i, 37) = Application.WorksheetFunction.VLookup(.Cells(i, 8), .Range("BX5:BY7"), 2, False)
                .Cells(i, 59) = 2
            End If
            If Not IsEmpty(Cells(i, 40)) And .Cells(i, 60) <> 2 Then
                .Cells(i, 43) = Application.WorksheetFunction.VLookup(.Cells(i, 8), .Range("BX5:BY7"), 2, False)
                .Cells(i, 60) = 2
            End If
            If Not IsEmpty(Cells(i, 46)) And .Cells(i, 61) <> 2 Then
                .Cells(i, 49) = Application.WorksheetFunction.VLookup(.Cells(i, 8), .Range("BX5:BY7"), 2, False)
                .Cells(i, 61) = 2
            End If
        Next i
    End With
End Sub

OUi, merci en effet j'ai réussis à la faire fonctionner, il fallait juste enlever :".worksheetfunction" dans la ligne Vlookup et ça fonctionne bien, maintenat il faut que je trouve comment lancer la macro automatiquement quand on rendre une date dans unes des colonnes de dates.

Bonjour,

une proposition

Rechercher des sujets similaires à "fonction vlookup memoire fichier"