[VBA Excel] Aide concernant une macro
Bonjour.
Voici mon problème :
Mon fichier excel n°1 :
Mon fichier excel n°2 :
Comme, on peut le voir, les données de la VCPU, de la Ram et du Stockage sont différents.
Le but est de remplacer les données du fichier excel n°2 par celle du fichier excel n°1 avec une macro.
Donc, on va prendre les noms de machines pour trouver la bonne ligne à remplacer.
J'ai essayé de le faire.
En effet, voici mon code :
Sub Test()
'Déclaration de variables'
Dim Rng As Range
Dim Rng2 As Range
Set Rng = Worksheets("Feuil1").Range("A1:A10").Find("A1:A10", LookAt:=xlPart) 'Plage de la recherche'
Set Rng2 = Worksheets("Feuil2").Range("A1:A10").Find("A1:A10", LookAt:=xlPart) 'Plage de la recherche'
'Les conditions'
If Rng Is Nothing Then
MsgBox "La machine n'existe pas !"
Else
Worksheets("Feuil1").Range("C1:C10").Copy.Row
Worksheets("Feuil1").Range("D1:D10").Copy.Row
Worksheets("Feuil1").Range("E1:E10").Copy.Row
If Rng2 Is Nothing Then
MsgBox "La machine n'existe pas !"
Else
ActiveSheet.Paste Destination:=Worksheets("Feuil2").Range("C1:C10").Row
ActiveSheet.Paste Destination:=Worksheets("Feuil2").Range("D1:D10").Row
ActiveSheet.Paste Destination:=Worksheets("Feuil2").Range("E1:E10").Row
End If
End If
End Sub
Mais ça ne marche pas. Pouvez-vous m'aider ?
Merci.
Bonjour,
A essayer :
Sub Test()
Dim Tablo(), rge As Range, c As Range, mach$, ln1%, ln2%, i%, k%
With Worksheets("Feuil1")
ln1 = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rge = .Range("A1:A" & ln2)
End With
With Worksheets("Feuil2")
ln2 = .Cells(.Rows.Count, 1).End(xlUp).Row
ReDim Tablo(2 To ln2, 3 To 5)
For i = 2 To ln2
mach = .Cells(i, 1)
Set c = rge.Find(mach, , , xlPart)
If Not c Is Nothing Then
For k = 3 To 5
Tablo(i, k) = c.Cells(1, k)
Next k
End If
Next i
.Range("C2:E" & ln2).Value = Tablo
End With
End Sub
Cordialement.
Merci, ça marche.
Juste un dernier truc, pour les lignes qui n'existe pas. Comment on fait pour les insérer ?
Et pouvez-vous m'expliquer le code pour que je le comprenne ?
Je suis désolé d'être embêtant mais j'aime bien comprendre ce que j'utilise
La question était de mettre à jour des valeurs du tableau 2 à partir du tableau 1.
Il n'était pas question de rajouter des données dans le tableau 2. Ceci étant, si l'objectif est d'avoir la totalité des mêmes éléments dans les deux tableaux, il suffit alors de faire une copie du tableau 1 !
Le code ? Le suivre pas à pas : on dimensionne un tableau sur la plage à mettre à jour. On recherche chaque machine de la feuille 2 sur la feuille 1, et si on la trouve on affecte les valeurs au tableau, lequel est affecté globalement à la fin sur la plage à mettre à jour.
Cordialement.
La question était de mettre à jour des valeurs du tableau 2 à partir du tableau 1.
Il n'était pas question de rajouter des données dans le tableau 2. Ceci étant, si l'objectif est d'avoir la totalité des mêmes éléments dans les deux tableaux, il suffit alors de faire une copie du tableau 1 !
Exact, je viens de me rendre compte que je ne l'ai pas indiqué dans mon premier message.
Il y a juste les captures qui le montre avec la capture de mon fichier excel 1 qui comprend une donnée supplémentaire par rapport à la capture de mon fichier excel 2.
Comment ça par copie du tableau 1. Pouvez-vous me donner un exemple s'il vous plait ?
Merci pour votre aide et pour l'explication. Vraiment merci merci beaucoup
Il y a une ambiguïté : ta macra initiale, comme ma proposition, travaille sur un même classeur...
Y a-t-il un ou deux classeur ?
On copie le tableau 1, on le colle à l'emplacement du tableau 2, et on aura deux mêmes tableaux !
Bonjour.
Désolé pour mon retard. J'ai eu des petits problèmes personnels.
Alors, pour répondre à la question : il y a 2 classeurs.
Après, les screens publié dans ce sujet sont des exemples pour comprendre plus facilement mon problème.
Ce ne sont pas réellement les 2 fichiers excels.
Je n'ai pas voulu les publier pour ne pas les montrer à tout le monde parce-que c'est personnel.
Par contre, je peux éventuellement les fournir par MP si nécessaire.
En gros ça ressemble fortement aux screens sauf qu'il y a pas 10 lignes mais environ 150 lignes.
J'ai 2 fichiers, le fichier à mettre à jour et le fichier d'extraction.
Et, il faut bien modifier la ram, le stockage et la VCPU.
Par contre, sur le fichier d'extraction, il peut y avoir des nouvelles machines qui faut ajouter sur le fichier excel.
En gros, j'ai un fichier d'extraction par mois. Donc j'aimerai bien une macro pour aller plus vite et ne pas chercher le nom de la machine pour remplacer la ram, le stockage et la VCPU.
Et ne pas non plus rajouter une ligne complète pour les nouvelles machines.
C'est pour pouvoir gagner du temps.
J'espère avoir mieux répondu à la question.
Merci.
Bonjour,
Désolé de ne pas réagir rapidement mais je ne manque pas de travaux en chantier et ma disponibilité est quelque peu aléatoire dans la période...
Le problème se pose un peu différemment dès lors qu'il s'agit de 2 classeurs.
Il faut connaître l'emplacement des classeurs (même dossier ou non). Lequel contiendra la macro (à partir duquel on opère). En fonction de l'utilisation globale du classeur à mettre à jour, arrêter la méthode qui se révèlera la plus adéquate...
Un modèle de chaque classeur est particulièrement utile à cette fin...
Cordialement.
Bonjour.
J'ai répondu par MP.
Cordialement.