MaJ Tableau

Fermé
Vanitas71 Messages postés 3 Date d'inscription jeudi 11 mai 2017 Statut Membre Dernière intervention 11 mai 2017 - 11 mai 2017 à 10:39
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 11 mai 2017 à 14:20
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!
A voir également:

1 réponse

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
11 mai 2017 à 13:21
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
Vanitas71 Messages postés 3 Date d'inscription jeudi 11 mai 2017 Statut Membre Dernière intervention 11 mai 2017
11 mai 2017 à 13:33
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
11 mai 2017 à 13:49
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
Vanitas71 Messages postés 3 Date d'inscription jeudi 11 mai 2017 Statut Membre Dernière intervention 11 mai 2017
11 mai 2017 à 13:58
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779 > Vanitas71 Messages postés 3 Date d'inscription jeudi 11 mai 2017 Statut Membre Dernière intervention 11 mai 2017
11 mai 2017 à 14:20
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