Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/12/2011, 07h19   #1
 
Homme
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : décembre 2011
Messages : 5
Points : -2
Points : -2
Par défaut Mettre un fichier à jour à partir d'un autre

Bonsoir

Je dispose de 2 fichiers et souhaite mettre à jour les données de l’un grâce aux données de l’autre grâce à une macro.
Je m’explique :
A partir du nombre contenu dans la colonne A du fichier « Flux_photo », je souhaite vérifier si celui-ci existe dans la colonne D du fichier « suivi - Info - clc - u202213 »
A partir de là, 2 possibilités :
- Soit le nombre existe et alors il faut copier les champs du fichier « Flux_photo », vers les champs correspondant du fichier « suivi - Info - clc - u202213 »
La colonne B de « Flux_Photo » correspond à la colonne F du fichier « suivi - Info - clc - u202213 »
La colonne C de « Flux_Photo » correspond à la colonne K du fichier « suivi - Info - clc - u202213 »
La colonne D de « Flux_Photo » correspond à la colonne L du fichier « suivi - Info - clc - u202213 »
La colonne E de « Flux_Photo » correspond à la colonne P du fichier « suivi - Info - clc - u202213 »
La colonne F de « Flux_Photo » correspond à la colonne E du fichier « suivi - Info - clc - u202213 »
La colonne G de « Flux_Photo » correspond à la colonne Q du fichier « suivi - Info - clc - u202213 »
La colonne H de « Flux_Photo » correspond à la colonne R du fichier « suivi - Info - clc - u202213 »
La colonne I de « Flux_Photo » correspond à la colonne A du fichier « suivi - Info - clc - u202213 »
La colonne J de « Flux_Photo » correspond à la colonne S du fichier « suivi - Info - clc - u202213 »
La colonne K de « Flux_Photo » correspond à la colonne T du fichier « suivi - Info - clc - u202213 »
La colonne L de « Flux_Photo » correspond à la colonne U du fichier « suivi - Info - clc - u202213 »
La colonne M de « Flux_Photo » correspond à la colonne V du fichier « suivi - Info - clc - u202213 »
- Soit le nombre n’existe pas et alors il faut copier les champs du fichier « Flux_Photo » à partir de la première ligne vide du fichier « « suivi - Info - clc - u202213 »
Merci de votre aide, je galère
Fichiers attachés
Type de fichier : xlsx Flux_photo.xlsx (9,0 Ko, 1 affichages)
Type de fichier : xlsx suivi - Info - clc - u202213.-.xlsx (171,4 Ko, 3 affichages)
jip31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 09h10   #2
Membre Expert
 
Avatar de MarcelG
 
Homme Marcel GALANO
Développeur informatique
Inscription : juillet 2009
Messages : 644
Détails du profil
Informations personnelles :
Nom : Homme Marcel GALANO
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juillet 2009
Messages : 644
Points : 1 255
Points : 1 255
Par défaut recherche

Bonjour au Forum,

Bonjour jip31, et bienvenu !

Je te proposerais la méthode Find gérée ainsi

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Public Sub ESSAI()
 
Dim c As Range
Dim f As Range
Dim col_photo As Range
Dim col_recherche As Range
Dim feuille_recherche As Worksheet
 
'Affectation de variables aux colonnes à balayer et recherche
With ThisWorkbook.Sheets(1)
        Set col_photo = .Range(.Range("A2"), .Cells(.Rows.Count, 1).End(xlUp))
End With
Set feuille_recherche = Workbooks("suivi - Info - clc - u202213.-.xlsx").Sheets("photo a effectuer")
With feuille_recherche
        Set col_recherche = .Range(.Range("D2"), .Cells(.Rows.Count, 4).End(xlUp))
End With
 
'Boucle sur les numéros de série du 1er classeur
For Each c In col_photo
        Set f = col_recherche.Find(c, Lookat:=xlWhole)
        'Si c absent, la ligne d'informations = 1ère ligne vide
        If f Is Nothing Then
            ligne = col_recherche.End(xlDown).Offset(1, 0).Row
        Else
        'Si c présent, la ligne d'informations est celle trouvée
            ligne = f.Row
        End If
        'Informations dans le 2nd classeur
        With feuille_recherche
            'Colonne A, Passons outre la redondance en cas de succès
            .Cells(ligne, 4) = c.Value
            'Colonne F = Colonne B
            .Cells(ligne, 5) = c.Offset(0, 1)
            'etc pour toutes les colonnes
         End With
Next c
 
'Réinitialisation des variables
Set col_photo = Nothing
Set feuille_recherche = Nothing
Set col_recherche = Nothing
Set f = Nothing
 
End Sub
Par hypothèse, en cas de succès de la recherche, j'ai considéré que la cellule trouvée est unique dans le second fichier.

Il te reste à adapter l'ensemble des colonnes à l'intérieur de la dernière méthode With.

Regarde bien ce code, et reviens si nécessaire.

Bonne journée.
__________________

Bien Cordialement.

Marcel

Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


MarcelG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 07h29   #3
 
Homme
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : décembre 2011
Messages : 5
Points : -2
Points : -2
Par défaut Mettre un fichier à jour à partir d'un autre

Bonjour Marcel et merci pour votre aide!
On est bien d'accord la macro est à placer dans un module de "Flux_photo"?
Si c'est bien le cas, la macro plante sur la ligne 13
Code :
Set feuille_recherche = Workbooks("suivi - Info - clc - u202213.-.xlsx").Sheets("photo a effectuer")
Pouvez vous m'aider?
Encore merci et bon Dimanche
jip31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 09h34   #4
Membre Expert
 
Avatar de MarcelG
 
Homme Marcel GALANO
Développeur informatique
Inscription : juillet 2009
Messages : 644
Détails du profil
Informations personnelles :
Nom : Homme Marcel GALANO
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juillet 2009
Messages : 644
Points : 1 255
Points : 1 255
Par défaut variables

Bonjour jip31, Bonjour le Forum,

Il s'agit ici d'une affectation de variable à un objet Worksheet.

Vérifie les 3 points suivants:
- le 2nd fichier est ouvert
- son nom est bien celui indiqué dans cette affectation
- le nom de la feuille est bien celui indiqué
__________________

Bien Cordialement.

Marcel

Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


MarcelG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 07h21   #5
 
Homme
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : décembre 2011
Messages : 5
Points : -2
Points : -2
Par défaut Mettre un fichier à jour à partir d'un autre

bonjour marcel

déjà le second fichier n 'était pas ouvert...
je verifie et vous tiens au courant!
bonne journée
jip31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h11.


 
 
 
 
Partenaires

Hébergement Web