OVH Cloud OVH Cloud

Aide sur macro VBA/excel

3 réponses
Avatar
malach
Bonjour =E0 tous,
J'ai besoin pour mon travail de cr=E9er une macro. Le probleme est qu'il
faut passer par du VBA et que je suis assez nul dans ce domaine ma
sp=E9cialit=E9 =E9tant le php
Voici mon probleme:

Classeur 1 avec des donn=E9es, les colonnes sont fixes ( disons 6
colonnes) mais les lignes sont variables entre 1 =E0 5 lignes maximum.

Classeur 2 avec les donn=E9es du classeur 1.

Je souhaiterai grace =E0 une macro, copier les donn=E9es du classeur 1
sur le classeur 2 mais sans jamais ecraser les donn=E9es qui pourraient
d=E9j=E0 y =EAtre pr=E9sente et donc =E0 la suite.
=20
J'espere =EAtre assez clair.

3 réponses

Avatar
Youky
Voici une solution,
Le classeur2 peut être ouvert ou fermé
Pense bien à modifier le nom des fichiers en macro
tu peux enlever les apostrophes en bas pour sauver et fermer Classeur2
qui n'apparait pas à l'écran
Si tu connait pas bien, fait insertion module et tu copie tout
Youky

Sub mycopy()
Application.ScreenUpdating = False
bas = [A:G].Find("*", , 1, , 1, 2).Row
Range("A1:G" & bas).Copy
On Error Resume Next
Windows("Classeur2.xls").Activate
If Err <> 0 Then
Workbooks.Open Filename:="Classeur2.xls"
Err.Clear
End If
With Workbooks("Classeur2.xls")
lig = [A:G].Find("*", , 1, , 1, 2).Row + 1
Range("A" & lig).Select
ActiveSheet.Paste
End With
'ActiveWorkbook.Save
'ActiveWorkbook.Close savechanges:=True
Application.ScreenUpdating = True
Windows("Classeur1.xls").Activate
End Sub

a écrit dans le message de news:

Bonjour à tous,
J'ai besoin pour mon travail de créer une macro. Le probleme est qu'il
faut passer par du VBA et que je suis assez nul dans ce domaine ma
spécialité étant le php
Voici mon probleme:

Classeur 1 avec des données, les colonnes sont fixes ( disons 6
colonnes) mais les lignes sont variables entre 1 à 5 lignes maximum.

Classeur 2 avec les données du classeur 1.

Je souhaiterai grace à une macro, copier les données du classeur 1
sur le classeur 2 mais sans jamais ecraser les données qui pourraient
déjà y être présente et donc à la suite.

J'espere être assez clair.
Avatar
Malach
Hello
Cela ne fonctionne pas
il me retourne une erreur 9 ici
bas = [A:G].Find("*", , 1, , 1, 2).Row


J ai fais cela et cela fonctionne, mais pouvez vous commenter ??
Sub gen_BD()
'
' test Macro
' Macro enregistrée le 25/07/2006 par Maia
'
'
Range("A2:F" & [A65536].End(xlUp).Row).Copy
Workbooks.Open Filename:= _
"C:Documents and SettingsMaiaMes documentstest2.xls"
Range("A65536").End(xlUp)(2).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWindow.Close
End Sub




Voici une solution,
Le classeur2 peut être ouvert ou fermé
Pense bien à modifier le nom des fichiers en macro
tu peux enlever les apostrophes en bas pour sauver et fermer Classeur2
qui n'apparait pas à l'écran
Si tu connait pas bien, fait insertion module et tu copie tout
Youky

Sub mycopy()
Application.ScreenUpdating = False
bas = [A:G].Find("*", , 1, , 1, 2).Row
Range("A1:G" & bas).Copy
On Error Resume Next
Windows("Classeur2.xls").Activate
If Err <> 0 Then
Workbooks.Open Filename:="Classeur2.xls"
Err.Clear
End If
With Workbooks("Classeur2.xls")
lig = [A:G].Find("*", , 1, , 1, 2).Row + 1
Range("A" & lig).Select
ActiveSheet.Paste
End With
'ActiveWorkbook.Save
'ActiveWorkbook.Close savechanges:=True
Application.ScreenUpdating = True
Windows("Classeur1.xls").Activate
End Sub



Avatar
Youky
Re, Maia
1er cas pour l'erreur 9
tu as peut être Excel 97, je viens de tester dessus et en faite ca bug.
Si les données à copier font pas la vague on test sur col A et parfait comme
tu as fais
cela ne va pas si A4 est vide et B4 ou C4 ou D5 ont une valeur

2eme cas tu lances la macro depuis un userform et là il faut spécifier le
nom
de l'onglet ou le code name ex: Feuil1.[A:G]......ou [nomonglet!A:G]...
Tout est Ok sauf que tu as enlevé la gestion de l'erreur de l'ouverture du
fichier
Si un jour il reste ouvert et que tu lances la macro......test.
Cela m'interesse de connaitre ta version Excel ..moi c'est 2000
Youky

"Malach" a écrit dans le message de news:

Hello
Cela ne fonctionne pas
il me retourne une erreur 9 ici
bas = [A:G].Find("*", , 1, , 1, 2).Row


J ai fais cela et cela fonctionne, mais pouvez vous commenter ??
Sub gen_BD()
'
' test Macro
' Macro enregistrée le 25/07/2006 par Maia
'
'
Range("A2:F" & [A65536].End(xlUp).Row).Copy
Workbooks.Open Filename:= _
"C:Documents and SettingsMaiaMes documentstest2.xls"
Range("A65536").End(xlUp)(2).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWindow.Close
End Sub




Voici une solution,
Le classeur2 peut être ouvert ou fermé
Pense bien à modifier le nom des fichiers en macro
tu peux enlever les apostrophes en bas pour sauver et fermer Classeur2
qui n'apparait pas à l'écran
Si tu connait pas bien, fait insertion module et tu copie tout
Youky

Sub mycopy()
Application.ScreenUpdating = False
bas = [A:G].Find("*", , 1, , 1, 2).Row
Range("A1:G" & bas).Copy
On Error Resume Next
Windows("Classeur2.xls").Activate
If Err <> 0 Then
Workbooks.Open Filename:="Classeur2.xls"
Err.Clear
End If
With Workbooks("Classeur2.xls")
lig = [A:G].Find("*", , 1, , 1, 2).Row + 1
Range("A" & lig).Select
ActiveSheet.Paste
End With
'ActiveWorkbook.Save
'ActiveWorkbook.Close savechanges:=True
Application.ScreenUpdating = True
Windows("Classeur1.xls").Activate
End Sub