2 classeurs avec chacun 1 liste de 4500 lignes sur 8 colonnes
1 des colonnes de chaque classeur contient un code unique
J'ai besoin de 3 choses :
1 - mettre a jour la ligne du classeur 1 à partir du classeur 2 si le code
existe dans les deux
2 - si le code existe en 2 mais pas en 1, ajouter/copier ligne classeur 2
sur classeur 1
3 - si le code existe en 1 mais pas en 2, copier ligne classeur 1 dans
classeur 3 puis supprimer ligne classeur 1
Pour la comparaison sur les codes, je pense utiliser un recherchev ou du
moins son équivalent vba, mais ce que je ne sais pas faire, c'est passer
d'un classeur à l'autre et se positionner sur une feuille donnée. J'ai
essayé ce qui suit mais je me prends une erreur de type ???
Dim ActualWBook, UpdtBook, As String '(classeur 1, classeur 2)
UpdtBook = Application.GetOpenFilename("Excel Files (*.xls), *.xls")
Workbooks.Open Filename:=UpdtBook
Workbook(UpdtBook).activate
En clair, si je passe par une variable, j'obtiens une erreur (alors que la
valeur de la var est correcte), si je code le nom en dur, ça passe !?
Bref, si qqun à un lien qui parle de de genre de manips, je suis preneur
(j'ai déjà fouiné sur les grands classiques genre Excelabo, bien entendu).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
j
chez moi, en retirant la virgule avant "as string" et le "Workbook(UpdtBook).activate", ça marche le Workbook(UpdtBook).activate est très incorrect (et tout à fait inutile puisque le classeur qui vient d'être ouvert est automatiquement actif) il faut dire Workbooks et pas workbook et mettre entre les parenthèses le nom d'un fichier ouvert si tu y tiens tu peux écrire : nomfich = UpdtBook Do While InStr(nomfich, "") > 0 nomfich = Right(nomfich, Len(nomfich) - 1) Loop Workbooks(nomfich).Activate
ou bien Set fich = Workbooks.Open(UpdtBook) ..... Workbooks(fich.Name).Activate
enfin, Application.Dialogs(xlDialogOpen).Show reste quand même plus simple que tout ça...
"youpi!" a écrit dans le message de news:
Bonjour tout le monde,
Dim ActualWBook, UpdtBook, As String '(classeur 1, classeur 2) UpdtBook = Application.GetOpenFilename("Excel Files (*.xls), *.xls") Workbooks.Open Filename:=UpdtBook Workbook(UpdtBook).activate
En clair, si je passe par une variable, j'obtiens une erreur (alors que la valeur de la var est correcte), si je code le nom en dur, ça passe !?
Bref, si qqun à un lien qui parle de de genre de manips, je suis preneur (j'ai déjà fouiné sur les grands classiques genre Excelabo, bien entendu).
Mercizatous Alain
chez moi, en retirant la virgule avant "as string" et le
"Workbook(UpdtBook).activate", ça marche
le Workbook(UpdtBook).activate est très incorrect (et tout à fait inutile
puisque le classeur qui vient d'être ouvert est automatiquement actif)
il faut dire Workbooks et pas workbook et mettre entre les parenthèses le
nom d'un fichier ouvert
si tu y tiens tu peux écrire :
nomfich = UpdtBook
Do While InStr(nomfich, "") > 0
nomfich = Right(nomfich, Len(nomfich) - 1)
Loop
Workbooks(nomfich).Activate
ou bien
Set fich = Workbooks.Open(UpdtBook)
.....
Workbooks(fich.Name).Activate
enfin,
Application.Dialogs(xlDialogOpen).Show
reste quand même plus simple que tout ça...
"youpi!" <gaslag_notospam_@hotmail.com> a écrit dans le message de news:
em8xBDiqDHA.392@TK2MSFTNGP11.phx.gbl...
Bonjour tout le monde,
Dim ActualWBook, UpdtBook, As String '(classeur 1, classeur 2)
UpdtBook = Application.GetOpenFilename("Excel Files (*.xls), *.xls")
Workbooks.Open Filename:=UpdtBook
Workbook(UpdtBook).activate
En clair, si je passe par une variable, j'obtiens une erreur (alors que la
valeur de la var est correcte), si je code le nom en dur, ça passe !?
Bref, si qqun à un lien qui parle de de genre de manips, je suis preneur
(j'ai déjà fouiné sur les grands classiques genre Excelabo, bien entendu).
chez moi, en retirant la virgule avant "as string" et le "Workbook(UpdtBook).activate", ça marche le Workbook(UpdtBook).activate est très incorrect (et tout à fait inutile puisque le classeur qui vient d'être ouvert est automatiquement actif) il faut dire Workbooks et pas workbook et mettre entre les parenthèses le nom d'un fichier ouvert si tu y tiens tu peux écrire : nomfich = UpdtBook Do While InStr(nomfich, "") > 0 nomfich = Right(nomfich, Len(nomfich) - 1) Loop Workbooks(nomfich).Activate
ou bien Set fich = Workbooks.Open(UpdtBook) ..... Workbooks(fich.Name).Activate
enfin, Application.Dialogs(xlDialogOpen).Show reste quand même plus simple que tout ça...
"youpi!" a écrit dans le message de news:
Bonjour tout le monde,
Dim ActualWBook, UpdtBook, As String '(classeur 1, classeur 2) UpdtBook = Application.GetOpenFilename("Excel Files (*.xls), *.xls") Workbooks.Open Filename:=UpdtBook Workbook(UpdtBook).activate
En clair, si je passe par une variable, j'obtiens une erreur (alors que la valeur de la var est correcte), si je code le nom en dur, ça passe !?
Bref, si qqun à un lien qui parle de de genre de manips, je suis preneur (j'ai déjà fouiné sur les grands classiques genre Excelabo, bien entendu).
Mercizatous Alain
youpi!
"" a écrit
chez moi, en retirant la virgule avant "as string" et le "Workbook(UpdtBook).activate", ça marche le Workbook(UpdtBook).activate est très incorrect (et tout à fait inutile
puisque le classeur qui vient d'être ouvert est automatiquement actif)
Bien Maître, je prends note que ma vision du pb est coditiquement incorrecte :-)
il faut dire Workbooks et pas workbook et mettre entre les parenthèses le nom d'un fichier ouvert si tu y tiens tu peux écrire : nomfich = UpdtBook Do While InStr(nomfich, "") > 0 nomfich = Right(nomfich, Len(nomfich) - 1) Loop Workbooks(nomfich).Activate
ou bien Set fich = Workbooks.Open(UpdtBook) ..... Workbooks(fich.Name).Activate
enfin, Application.Dialogs(xlDialogOpen).Show reste quand même plus simple que tout ça...
Groumph ! J'avais mal cherché, alors. Bon, ben Yapuka. En tous cas, merci Jacques.
Alain
"j@c" <jacques.chaussard@noos.fr> a écrit
chez moi, en retirant la virgule avant "as string" et le
"Workbook(UpdtBook).activate", ça marche
le Workbook(UpdtBook).activate est très incorrect (et tout à fait
inutile
puisque le classeur qui vient d'être ouvert est automatiquement actif)
Bien Maître, je prends note que ma vision du pb est coditiquement incorrecte
:-)
il faut dire Workbooks et pas workbook et mettre entre les parenthèses le
nom d'un fichier ouvert
si tu y tiens tu peux écrire :
nomfich = UpdtBook
Do While InStr(nomfich, "") > 0
nomfich = Right(nomfich, Len(nomfich) - 1)
Loop
Workbooks(nomfich).Activate
ou bien
Set fich = Workbooks.Open(UpdtBook)
.....
Workbooks(fich.Name).Activate
enfin,
Application.Dialogs(xlDialogOpen).Show
reste quand même plus simple que tout ça...
Groumph ! J'avais mal cherché, alors. Bon, ben Yapuka.
En tous cas, merci Jacques.
chez moi, en retirant la virgule avant "as string" et le "Workbook(UpdtBook).activate", ça marche le Workbook(UpdtBook).activate est très incorrect (et tout à fait inutile
puisque le classeur qui vient d'être ouvert est automatiquement actif)
Bien Maître, je prends note que ma vision du pb est coditiquement incorrecte :-)
il faut dire Workbooks et pas workbook et mettre entre les parenthèses le nom d'un fichier ouvert si tu y tiens tu peux écrire : nomfich = UpdtBook Do While InStr(nomfich, "") > 0 nomfich = Right(nomfich, Len(nomfich) - 1) Loop Workbooks(nomfich).Activate
ou bien Set fich = Workbooks.Open(UpdtBook) ..... Workbooks(fich.Name).Activate
enfin, Application.Dialogs(xlDialogOpen).Show reste quand même plus simple que tout ça...
Groumph ! J'avais mal cherché, alors. Bon, ben Yapuka. En tous cas, merci Jacques.