MaJ Tableau
Vanitas71
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
Patrice33740 Messages postés 8561 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!
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:
- MaJ Tableau
- Tableau word - Guide
- Tableau ascii - Guide
- È maj - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
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
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
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
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