Programmation vba excell 2003

Fermé
edck17 - 22 avril 2011 à 00:13
Coco Tickles Messages postés 111 Date d'inscription mercredi 20 avril 2011 Statut Membre Dernière intervention 18 mai 2011 - 22 avril 2011 à 11:57
Bonjour,

J'essai de programmer sous excell 2003 la récupération de données dans un fichier dont je paramètre le nom.

J'ai une erreur 1004 qui s'affiche. Apparemment excell ne trouve pas sa cible mais je n'arrive pas à trouver la bonne syntaxe.

Voici les lignes principale de la macro


'
' acquisition_eleve1 Macro Module5

Dim LaFeuille As Worksheet

Dim Laplage As Range, laMatiere As Range, lesEleves As Range


Dim lacible1 As Range, lacible2 As Range, lacible3 As Range, lacible4 As Range, lacible5 As Range
Dim lacible6 As Range, lacible7 As Range, lacible8 As Range, lacible9 As Range, lacible10 As Range
Dim lacible11 As Range, lacible12 As Range, lacible13 As Range, lacible14 As Range, lacible15 As Range
Dim lacible16 As Range, lacible17 As Range, lacible18 As Range, lacible19 As Range, lacible20 As Range

Dim apprec As Range

Dim ciblapprec1 As Range, ciblapprec2 As Range, ciblapprec3 As Range, ciblapprec4 As Range, ciblapprec5 As Range
Dim ciblapprec6 As Range, ciblapprec7 As Range, ciblapprec8 As Range, ciblapprec9 As Range, ciblapprec10 As Range
Dim ciblapprec11 As Range, ciblapprec12 As Range, ciblapprec13 As Range, ciblapprec14 As Range, ciblapprec15 As Range
Dim ciblapprec16 As Range, ciblapprec17 As Range, ciblapprec18 As Range, ciblapprec19 As Range, ciblapprec20 As Range

Dim nomdeFeuille As String, nomEleve As String, nomMatiere As String


' initialisation de la zone matière et la zone appréciation à charger (la même quelque soit la feuille)
Set Laplage = Range("C7:E13")
Set apprec = Range("F5")

' initialisation des zones de réception des validation par matière de l'élève n°x

Set lacible1 = Range("C4:E10")
Set lacible2 = Range("F4:H10")

etc ...

' initialisation des zones cibles pour les appréciations dans chaque matière

Set ciblapprec1 = Range("L32")
Set ciblapprec2 = Range("M32")

etc ...

Set LaFeuille = Sheets("ListeElèves")

' initialisation zone matières à rechercher
Set laMatiere = Sheets("ListeElèves").Range("G2:G17")
ligne = 1
While laMatiere.Cells(ligne, 1) <> "0"
nomMatiere = laMatiere.Cells(ligne, 1).Value & "_" & Sheets("ListeElèves").Range("C38").Value & "_" & Sheets("ListeElèves").Range("F38").Value

Set LaFeuille = Sheets(Range("A32").Value & "_" & Range("A35").Value)

- cette ligne bug ? -

lacible1.Cells(1, 1).FormulaR1C1 = "=" & "[" & nomMatiere & ".xls" & "]" & "competences" & "!" & Laplage.Cells(1, 1).Value


ensuite erreur 1004


Merci d'avance à la personne qui pourra me venir en aide.

2 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
Modifié par pilas31 le 22/04/2011 à 02:22
Bonsoir,

Dans cette macro on est bien d'accord que :

lacible1.Cells(1, 1) désigne la cellule C4 de la feuille courante au début de la macro
Laplage.Cells(1, 1).Value désigne la valeur de la cellule C7 idem de la feuille courante au début

L'erreur 1004 doit se produire peut-être parce que C7 est vide alors qu'il devrait contenir une référence au format R1C1.

Mais c'est certainement parce que il ne va pas chercher la valeur dans la bonne feuille :

En effet l'instruction :

Set Laplage = Range("C7:E13") fige le range à la feuille courante au moment de l'instruction. ALors que, si je comprends bien, il faut aller chercher la valeur dans LaFeuille.

Donc je pense qu'il faut calculer LaFeuille avant et modifier les set comme cela :

Set Laplage = LaFeuille.Range("C7:E13")
Set lacible1 = LaFeuille.Range("C4:E10")

Enfin voila mon idée à tester

A+

Cordialement,
0
Coco Tickles Messages postés 111 Date d'inscription mercredi 20 avril 2011 Statut Membre Dernière intervention 18 mai 2011 9
22 avril 2011 à 11:57
Lorsque il y a une erreur de type 1404, c'est que tu a protéger la feuille active: pour que ton macro fonction, il faut que tu désactive la protection de la feuille,

Au revoir.
0