MaJ Tableau

Vanitas71 Messages postés 3 Statut Membre -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous.

Dans le cadre de mon travail, je souhaite créer une macro afin de mettre à jour un tableau à partir d'un autre tableau.
Voici la marche que je souhaite suivre.
Tableau de donnée d'entrée = Folio_Source
Tableau à mettre à jour = Folio
Folio_Source et Folio sont deux feuilles différentes du même fichier excel.

Chaque ligne correspond à un dossier avec différentes informations dans chaque colonnes.
Le N° des dossier est situé en colonne C, et la liste commence à la ligne 5.

Pour un i allant de 5 à jusqu'à la dernière cellule non vide de la colonne C du Folio_Source:
- Si le N° du dossier en Ci du folio_source existe dans la colonne C du Folio, alors copier les cellules Ai à Hi du Folio_Source et les coller dans la ligne correspondant à ce N° de dossier dans la feuille Folio.

- Si le N° de dossier n'existe pas, alors copier les cellules Ai à Hi du Folio_Source et les coller dans la première ligne vide à la fin du Folio

Pour cela, j'ai mis en place le code suivant:

Sub Comparer_folio()

'Comparer "Folio_Source" à "Folio"
Dim i As Integer 'Numéros de ligne à faire varier
Dim Cell_source As Range 'Cellule source du Folio Source
Dim Cell_MaJ As Range 'Cellule à mettre à jour du Folio
Dim Col_MaJ As Range 'Colonne des numéros de points à mettre à jour
Dim f As Variant
Dim DLig As Range

Set Cell_source = Sheets("Folio_Source").Range("C" & i)
Set Cell_MaJ = Sheets("Folio").Range("C" & i)
Set Col_MaJ = Sheets("Folio").Columns("C")
Set DLig = Sheets("Folio").Range("A1").End(xlDown).Row + 1

'1er bouclage: mise à jour des points + ajout des points créés
i = 5 'On commence à la ligne 5
Do While Cell_source <> ""
f = Application.WorksheetFunction.vlookup(Cell_source, Col_MaJ, 1, False)
If IsError(f) Then
Sheets("Folio_Source").Cells("Ai:Hi").Copy
Sheets("Folio").DLig.PasteSpecial
Application.CutCopyMode = False
Else
Sheets("Folio_Source").Cells("Ai:Hi").Copy
Application.WorksheetFunction.vlookup(Cell_source, Col_MaJ, 1, False).PasteSpecial
Application.CutCopyMode = False

i = i + 1
End If
Loop

End Sub

Etant jeune débutant dans le VBA, je me doute que cette macro n'est pas top. Je tombe toujours sur pleins d'erreur:
- Erreur définie par l'application ou par l'objet pour la définition des variable (Set...)
- impossible de lire la propriété vlookup

Pouvez vous m'aider?

Merci d'avance!

1 réponse

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Bonjour,

    Il faut définir la valeur de i avant d'utiliser la variable :
    Set Cell_source = Sheets("Folio_Source").Range("C" & i)  
    
    --
    Cordialement
    Patrice
    0
    1. Vanitas71 Messages postés 3 Statut Membre
       
      Bonjour!

      Merci pour votre réponse.
      Quand je place le i=5 avant la définition de la variable, le même message d'erreur apparaît...

      cordialement
      0
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      Avec :
      i = 5
      Set Cell_source = Sheets("Folio_Source").Range("C" & i) 
      le même message d'erreur ...
      Oui mais lequel exactement ?
      Selon le cas, plusieurs causes possibles :
      1 - La feuille "Folio_Source" n'existe pas
      2 - La feuille "Folio_Source" n'est pas une feuille de calcul
      3 - La feuille "Folio_Source" est protégée
      4 - ...

      Note : à partir d'Excel 2007, il est préférable de déclarer les numéros de ligne As Long
      0
    3. Vanitas71 Messages postés 3 Statut Membre
       
      Merci pour le conseil.

      Le message d'erreur est "variable objet ou variable de bloc with non définie" et il survivre la ligne Cell_source = Sheets("Folio_source").Range("C"&i).

      Vanitas
      0
      1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783 > Vanitas71 Messages postés 3 Statut Membre
         
        Re,

        Il serait plus simple de répondre avec ton fichier,
        débarassé des informations confidentielles s'il y lieu.

        Déposes le fichier avec des commentaires explicatifs sur
        https://www.cjoint.com/
        et mets le lien obtenu dans ton prochain message.

        Tuto : Comment utiliser C.joint.fr
        0