[VBA Excel] Aide concernant une macro

Bonjour.

Voici mon problème :

Mon fichier excel n°1 :

og94

Mon fichier excel n°2 :

bb47

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.

Rechercher des sujets similaires à "vba aide concernant macro"