Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et, n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis, dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.
Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et, n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis, dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.
Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et, n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis, dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.
Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et,
n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu
dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et
le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne
commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas
toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont
pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis,
dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un
si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.
Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et,
n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu
dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et
le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne
commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas
toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont
pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis,
dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un
si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.
Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et,
n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu
dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et
le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne
commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas
toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont
pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis,
dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un
si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.
Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et, n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis, dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.
Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et, n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis, dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.
Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et, n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis, dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.
Bonjour,
Pour des observations en colonne B dans le fichier "A" et en colonne E dans
"B" :
Sub Toto()
Windows("A.xls").Activate
Range("B2").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, _
header:=xlYes
While ActiveCell <> ""
Obs = ActiveCell.Value
V = ActiveCell.Offset(, -1)
Windows("B.xls").Activate
Columns("A:A").Select
Selection.Find(What:=V, After:¬tiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
ActiveCell.Offset(0, 4).Range("A1") = Obs
Windows("A.xls").Activate
ActiveCell.Offset(1).Select
Wend
End Sub
Camille
"g.cook" wrote:Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et, n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis, dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.
Bonjour,
Pour des observations en colonne B dans le fichier "A" et en colonne E dans
"B" :
Sub Toto()
Windows("A.xls").Activate
Range("B2").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, _
header:=xlYes
While ActiveCell <> ""
Obs = ActiveCell.Value
V = ActiveCell.Offset(, -1)
Windows("B.xls").Activate
Columns("A:A").Select
Selection.Find(What:=V, After:¬tiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
ActiveCell.Offset(0, 4).Range("A1") = Obs
Windows("A.xls").Activate
ActiveCell.Offset(1).Select
Wend
End Sub
Camille
"g.cook" wrote:
Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et, n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis, dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.
Bonjour,
Pour des observations en colonne B dans le fichier "A" et en colonne E dans
"B" :
Sub Toto()
Windows("A.xls").Activate
Range("B2").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, _
header:=xlYes
While ActiveCell <> ""
Obs = ActiveCell.Value
V = ActiveCell.Offset(, -1)
Windows("B.xls").Activate
Columns("A:A").Select
Selection.Find(What:=V, After:¬tiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
ActiveCell.Offset(0, 4).Range("A1") = Obs
Windows("A.xls").Activate
ActiveCell.Offset(1).Select
Wend
End Sub
Camille
"g.cook" wrote:Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et, n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis, dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.
Bonjour.
En admettant que la colonne No soit la colonne A et les observations soient
en colonne B sur les deux feuilles, essaie la macro :
Sub TranfertObservations()
Dim Plage As Range, c As Range, Cible As Range, cc As Range, Ligne As
Long
Workbooks("ClasseurCible").Activate
Sheets("Feuil1").Select
Set Cible = Workbooks("ClasseurCible").Worksheets("Feuil1").Range("A1",
Range("A65536").End(xlUp))
Workbooks("ClasseurSource").Activate
Set Plage = Range("A1", Range("A65536").End(xlUp))
For Each c In Plage
If c.Offset(0, 1) <> "" Then
Var = WorksheetFunction.VLookup(c.Value, Cible, 1)
Ligne = Application.Match(c.Value, Cible)
If Not IsNumeric(Ligne) Then
MsgBox "Pas de correspondance pour " & c.Value
Exit Sub
End If
Cible(Ligne, 2) = c.Offset(0, 1).Value
End If
Next c
End Sub
Cordialement.
Daniel
"g.cook" a écrit dans le message de news:Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et,
n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu
dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et
le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne
commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas
toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont
pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis,
dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un
si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.
Bonjour.
En admettant que la colonne No soit la colonne A et les observations soient
en colonne B sur les deux feuilles, essaie la macro :
Sub TranfertObservations()
Dim Plage As Range, c As Range, Cible As Range, cc As Range, Ligne As
Long
Workbooks("ClasseurCible").Activate
Sheets("Feuil1").Select
Set Cible = Workbooks("ClasseurCible").Worksheets("Feuil1").Range("A1",
Range("A65536").End(xlUp))
Workbooks("ClasseurSource").Activate
Set Plage = Range("A1", Range("A65536").End(xlUp))
For Each c In Plage
If c.Offset(0, 1) <> "" Then
Var = WorksheetFunction.VLookup(c.Value, Cible, 1)
Ligne = Application.Match(c.Value, Cible)
If Not IsNumeric(Ligne) Then
MsgBox "Pas de correspondance pour " & c.Value
Exit Sub
End If
Cible(Ligne, 2) = c.Offset(0, 1).Value
End If
Next c
End Sub
Cordialement.
Daniel
"g.cook" <g.cook@discussions.microsoft.com> a écrit dans le message de news:
5B0CFC55-56D4-4FE9-B359-DD3F4B05861F@microsoft.com...
Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et,
n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu
dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et
le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne
commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas
toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont
pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis,
dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un
si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.
Bonjour.
En admettant que la colonne No soit la colonne A et les observations soient
en colonne B sur les deux feuilles, essaie la macro :
Sub TranfertObservations()
Dim Plage As Range, c As Range, Cible As Range, cc As Range, Ligne As
Long
Workbooks("ClasseurCible").Activate
Sheets("Feuil1").Select
Set Cible = Workbooks("ClasseurCible").Worksheets("Feuil1").Range("A1",
Range("A65536").End(xlUp))
Workbooks("ClasseurSource").Activate
Set Plage = Range("A1", Range("A65536").End(xlUp))
For Each c In Plage
If c.Offset(0, 1) <> "" Then
Var = WorksheetFunction.VLookup(c.Value, Cible, 1)
Ligne = Application.Match(c.Value, Cible)
If Not IsNumeric(Ligne) Then
MsgBox "Pas de correspondance pour " & c.Value
Exit Sub
End If
Cible(Ligne, 2) = c.Offset(0, 1).Value
End If
Next c
End Sub
Cordialement.
Daniel
"g.cook" a écrit dans le message de news:Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et,
n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu
dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et
le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne
commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas
toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont
pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis,
dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un
si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.
Bonjour,
Pour des observations en colonne B dans le fichier "A" et en colonne E dans
"B" :
Sub Toto()
Windows("A.xls").Activate
Range("B2").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, _
header:=xlYes
While ActiveCell <> ""
Obs = ActiveCell.Value
V = ActiveCell.Offset(, -1)
Windows("B.xls").Activate
Columns("A:A").Select
Selection.Find(What:=V, After:¬tiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
ActiveCell.Offset(0, 4).Range("A1") = Obs
Windows("A.xls").Activate
ActiveCell.Offset(1).Select
Wend
End Sub
Camille
"g.cook" wrote:Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et, n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis, dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.
Bonjour,
Pour des observations en colonne B dans le fichier "A" et en colonne E dans
"B" :
Sub Toto()
Windows("A.xls").Activate
Range("B2").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, _
header:=xlYes
While ActiveCell <> ""
Obs = ActiveCell.Value
V = ActiveCell.Offset(, -1)
Windows("B.xls").Activate
Columns("A:A").Select
Selection.Find(What:=V, After:¬tiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
ActiveCell.Offset(0, 4).Range("A1") = Obs
Windows("A.xls").Activate
ActiveCell.Offset(1).Select
Wend
End Sub
Camille
"g.cook" wrote:
Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et, n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis, dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.
Bonjour,
Pour des observations en colonne B dans le fichier "A" et en colonne E dans
"B" :
Sub Toto()
Windows("A.xls").Activate
Range("B2").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, _
header:=xlYes
While ActiveCell <> ""
Obs = ActiveCell.Value
V = ActiveCell.Offset(, -1)
Windows("B.xls").Activate
Columns("A:A").Select
Selection.Find(What:=V, After:¬tiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
ActiveCell.Offset(0, 4).Range("A1") = Obs
Windows("A.xls").Activate
ActiveCell.Offset(1).Select
Wend
End Sub
Camille
"g.cook" wrote:Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et, n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis, dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.
Bonjour, un petit complément d'aide STP.
Je viens de découvrir que la recherche "Find" ignorait les nombres < 10 (la
macro ne trouve pas les N° d'enregistrement < 10) et qu'elle ne recherchait
pas les nombres stricts mais une sous-chaîne. Par exemple, la recherche ...V
= 645.. peut aussi bien donner 645 que 1645 ou 6645... (je n'ai pas pu
vérifier si on pouvait trouver aussi 6452 ou 16452...).
Peut-être est-ce une mauvaise déclaration des variables de ma part ?
Merci encore pour l'aideBonjour,
Pour des observations en colonne B dans le fichier "A" et en colonne E dans
"B" :
Sub Toto()
Windows("A.xls").Activate
Range("B2").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, _
header:=xlYes
While ActiveCell <> ""
Obs = ActiveCell.Value
V = ActiveCell.Offset(, -1)
Windows("B.xls").Activate
Columns("A:A").Select
Selection.Find(What:=V, After:¬tiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
ActiveCell.Offset(0, 4).Range("A1") = Obs
Windows("A.xls").Activate
ActiveCell.Offset(1).Select
Wend
End Sub
Camille
"g.cook" wrote:Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et, n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis, dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.
Bonjour, un petit complément d'aide STP.
Je viens de découvrir que la recherche "Find" ignorait les nombres < 10 (la
macro ne trouve pas les N° d'enregistrement < 10) et qu'elle ne recherchait
pas les nombres stricts mais une sous-chaîne. Par exemple, la recherche ...V
= 645.. peut aussi bien donner 645 que 1645 ou 6645... (je n'ai pas pu
vérifier si on pouvait trouver aussi 6452 ou 16452...).
Peut-être est-ce une mauvaise déclaration des variables de ma part ?
Merci encore pour l'aide
Bonjour,
Pour des observations en colonne B dans le fichier "A" et en colonne E dans
"B" :
Sub Toto()
Windows("A.xls").Activate
Range("B2").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, _
header:=xlYes
While ActiveCell <> ""
Obs = ActiveCell.Value
V = ActiveCell.Offset(, -1)
Windows("B.xls").Activate
Columns("A:A").Select
Selection.Find(What:=V, After:¬tiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
ActiveCell.Offset(0, 4).Range("A1") = Obs
Windows("A.xls").Activate
ActiveCell.Offset(1).Select
Wend
End Sub
Camille
"g.cook" wrote:
Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et, n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis, dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.
Bonjour, un petit complément d'aide STP.
Je viens de découvrir que la recherche "Find" ignorait les nombres < 10 (la
macro ne trouve pas les N° d'enregistrement < 10) et qu'elle ne recherchait
pas les nombres stricts mais une sous-chaîne. Par exemple, la recherche ...V
= 645.. peut aussi bien donner 645 que 1645 ou 6645... (je n'ai pas pu
vérifier si on pouvait trouver aussi 6452 ou 16452...).
Peut-être est-ce une mauvaise déclaration des variables de ma part ?
Merci encore pour l'aideBonjour,
Pour des observations en colonne B dans le fichier "A" et en colonne E dans
"B" :
Sub Toto()
Windows("A.xls").Activate
Range("B2").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, _
header:=xlYes
While ActiveCell <> ""
Obs = ActiveCell.Value
V = ActiveCell.Offset(, -1)
Windows("B.xls").Activate
Columns("A:A").Select
Selection.Find(What:=V, After:¬tiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
ActiveCell.Offset(0, 4).Range("A1") = Obs
Windows("A.xls").Activate
ActiveCell.Offset(1).Select
Wend
End Sub
Camille
"g.cook" wrote:Bonjour à tous
J'ai un problème de type "base de données" à résoudre sous Excel et, n'ayant
plus touché à la programmation depuis Dbase III+, je suis quelque peu dérouté
par VBA sous Excel.
Le problème concerne deux fichiers Excel, que j'appellerai A et B,
structurés différemment mais concernant le même sujet (pas le même nb de
colonnes et informations saisies différentes). A et B ont en commun une
colonne "No" et une "Observations".
Dans le fichier A, des "Observations" on été saisies (10 000 environ) et le
jeu consiste à transférer ces "Observations" dans le fichier B, dans la
cellule correspondant à l'enregistrement "No" xxx qui repère la ligne commune
aux deux fichiers.
Etant donné que les cellules "Observations" du fichier A ne sont pas toutes
renseignées, je teste d'abord si les cellules de cette colonnes ne sont pas
vides. Lorsque je tombe sur une cellule renseignées, je dois en copier le
contenu, récupérer sur la même ligne la valeur de la cellule "No", puis, dans
le fichier B, rechercher le même "No", me placer sur la cellule
"Observations" de la même ligne et coller le contenu de l'"Observation" du
fichier A. On poursuit ainsi jusqu'à la fin des 10 000 observations.
Je précise qu'il vaut mieux que ça se fasse sous Excel directement plutôt
que de tranférer sous un SGBD (Access) car il y a des mises en forme à
conserver.
Désolé de déranger ainsi cette auguste communauté de développeurs pour un si
petit problème mais j'ai vraiment beaucoup de difficultés à assimiler la
logique VBA et j'ai passé une semaine à écrire quelques lignes de code en
écumant forums et sites d'aides divers sans succès.
Merci pour votre aide.