Lire les données dans un autre classeur excel

Fermé
Snoopa-star - Modifié par Snoopa-star le 3/04/2012 à 11:29
f894009 Messages postés 17209 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 décembre 2024 - 6 avril 2012 à 16:42
Bonjour, Je suis débutante en VBA et le peu que je connaisse c'est grâce au forum !!

Voilà mon soucis je souhaite créer un programme qui lise les données dans un autre classeur excel fermé (qui contient les même données que dans mon classeur actif) et effacer dans le classeur fermé les cellules dont le contenu est semblable aux cellules de mon classeur ouvert.
- Je ne maîtrise pas très bien les boucles (donc je préfère détailler)
- J'ai un message d'erreur " Erreur d'xecution 1004, erreur définie par l'application ou l'objet"

voici mon programme :

Sub choix_table_gnl()

Dim appxl As Excel.Application
Dim fichier As Window
Dim feuille As Worksheet
Set appxl = CreateObject("Excel.application")
Dim read As Variant

With appxl
.Workbooks.Open "C:\Documents and Settings\N0762215\My Documents\SEMINAIRE 2012\Test_classeur\Liste_diner.xls"
.Visible = False
End With


Set fichier = appxl.Windows("Liste_diner.xls")
fichier.Activate
Set feuille = appxl.Sheets("Liste_diner_1")

For i = 2 To 539
feuille.Range("D" & i).Select


For j = 8 To 18
If Activesheet.Range("D" & j) = Workbooks("Liste_diner").Sheets("Liste_diner_1").Range("D" & i) Then
Workbooks("Liste_diner").Sheets("Liste_diner_1").Range("D" & i).Delete
Workbooks("Liste_diner").Sheets("Liste_diner_1").Range("D" & i).Delete
Workbooks("Liste_diner").Sheets("Liste_diner_1").Range("D" & i).Delete


appxl.Workbooks("Liste_diner.xls").Save
appxl.Workbooks("Liste_diner.xld").Close

End If
Next
Next

End Sub



A voir également:

1 réponse

f894009 Messages postés 17209 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 décembre 2024 1 711
3 avril 2012 à 12:00
Bonjour,

If Activesheet.Range("D" & j) quel classeur??

Workbooks("Liste_diner").Sheets("Liste_diner_1").Range("D" & i) Then
Workbooks("Liste_diner").Sheets("Liste_diner_1").Range("D" & i).Delete
Workbooks("Liste_diner").Sheets("Liste_diner_1").Range("D" & i).Delete
Workbooks("Liste_diner").Sheets("Liste_diner_1").Range("D" & i).Delete


Lorsque que vous voulez utiliser Workbooks("Liste_diner"), il faut toujours mettre devant appxl. puisque vous avez cree :

Set appxl = CreateObject("Excel.application")

Pour les boucles, je n'ai rien compris de ce que vous voulez faire
1
Bonjour Monsieur pour votre réponse,


"If Activesheet.Range("D" & j) quel classeur?? "
=>> Cela correspond à la feuille active de mon classeur ouvert

J'utilise l'instruction FOR pour faire référence à mes lignes.
L'instruction que je souhaite faire executer est la suivante :


"Si la cellule X de la feuille A mon classeur ouvert est identique à la cellule X de la feuille B mon classeur fermé,

alors il faut suprimer le contenu de la cellule X de la feuille B de mon classeur fermé"


Je ne sais pas comment je pourrai écrire ça plus rapidement donc j'ai utilisé cette méthode qui marche.
Mon soucis est dans la lecture des données dans un classeur fermé.

Donc je compte sur votre connaissance pour m'éclairer la dessus!

Merci
0
f894009 Messages postés 17209 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 décembre 2024 1 711
6 avril 2012 à 16:42
Bonjour,

Mon soucis est dans la lecture des données dans un classeur fermé.


Lorsque que vous voulez utiliser Workbooks("Liste_diner"), il faut toujours mettre devant appxl. puisque vous avez cree :

Set appxl = CreateObject("Excel.application")

Donc:

Sub choix_table_gnl()

Dim appxl As Excel.Application
Dim fichier As Window
Dim feuille As Worksheet
Set appxl = CreateObject("Excel.application")
Dim read As Variant

With appxl
.Workbooks.Open "C:\Documents and Settings\N0762215\My Documents\SEMINAIRE 2012\Test_classeur\Liste_diner.xls"
.Visible = False
End With


Set fichier = appxl.Windows("Liste_diner.xls")
fichier.Activate
Set feuille = appxl.Sheets("Liste_diner_1")

For i = 2 To 539
feuille.Range("D" & i).Select

For j = 8 To 18
If Activesheet.Range("D" & j) =appxl. Workbooks("Liste_diner").Sheets("Liste_diner_1").Range("D" & i) Then
appxl.Workbooks("Liste_diner").Sheets("Liste_diner_1").Range("D" & i).Delete
appxl.Workbooks("Liste_diner").Sheets("Liste_diner_1").Range("D" & i).Delete
appxl.Workbooks("Liste_diner").Sheets("Liste_diner_1").Range("D" & i).Delete


appxl.Workbooks("Liste_diner.xls").Save
appxl.Workbooks("Liste_diner.xld").Close

End If
Next j
Next i

End Sub


Avec un exemple de vos fichiers, il serait possible de mieux vous aider. C'est vous qui voyez.

Bonne suite
0