Erreur 1004 Macro Excel VBA

Fermé
Julia - 19 févr. 2008 à 08:19
 mamou - 9 juil. 2008 à 13:53
Bonjour à tous,

Je suis novice en VBA et je dois créer un fichier excel qui qui permet de saisir des données dans un onglet et de les exporter dans un autre.
Voici la macro que j'ai faite

Sub tranpose_dans_tableau()
'Atteindre le formulaire et mémoriser les données'
Sheets("Formulaire").Select
Range("E6:E10").Select
Selection.Copy
'Test pour déterminer la ligne où coller les infos dans le tableau'
Sheets("Base de données").Select
ValeurA2 = Range("A2").Value
If ValeurA2 = "" Then
Range("A2").Select
Else
Range("A2").Select
Selection.End(xlDown).Select
ligne_active_base = ActiveCell.Row
Range("A" & ligne_active_base + 1).Select
End If
'Mémorise le n° de la ligne où coller les données'
ligne_active_base = ActiveCell.Row
'Collage avec transposition'
Range("A" & ligne_active_base).Select
Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, SkipBlank:=False, Transpose:=True
'Rendre le formulaire vierge'
Sheets("Formulaire").Select
Range("E6:E10").Select
Selection.ClearContents
Range("E6").Select
End Sub

Cependant j'ai une erreur 1004 "Erreur définie par l'application ou par l'objet" qui se produit quand je fais une vérification en mode pas à pas au niveau de la boucle if.

Pouvez vous m'aider ?

Merci
A voir également:

4 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 712
19 févr. 2008 à 09:47
bonjour

En simplifiant ton code et en supprimant les "select" inutiles cela donne ceci qui devrait fonctionner.
Sub tranpose_dans_tableau()
Dim ligne_active_base As Double
'Test pour déterminer la ligne où coller les infos dans le tableau'
Sheets("Base de données").Activate
'Mémorise le n° de la ligne où coller les données'
If Range("A2").Value = "" Then
    ligne_active_base = Range("A2").Row
Else
    ligne_active_base = Range("A2").End(xlDown).Row + 1
End If
'Atteindre le formulaire et mémoriser les données'
Sheets("Formulaire").Range("E6:E10").Copy
Range("A" & ligne_active_base).PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
'Collage avec transposition'
Application.CutCopyMode = False
'Rendre le formulaire vierge'
Sheets("Formulaire").Activate
Sheets("Formulaire").Range("E6:E10").ClearContents
Sheets("Formulaire").Range("E6").Select
End Sub
1
Merci pour ton aide
0
données, ça marchait mais depuis une semaine il m’affiche « run time error ‘1004 : méthode ’range of Object worksheet failed » . L’erreur se produit dans une page qui contient les indicateurs en chiffre pour alimenter les objets (histogramme, thermomètre ..) . je suis vraiment coince et en plus j’ai une réunion de reporting la semaine prochaine. J’ai besoin de votre aide SVP. Je peux transmettre le fichier si vous voulez.
Suite à ce message qu’on je veux déboguer, il l’ouvre cette fenêtre et il marque une ligne en jaune.

****************************
' Met à jour tous les indicateurs programmés
'**********************************
Private Sub CommandButton1_Click()
'appel de la fonction feu rouge
'Feu rouge alerte client
seuilbas = Feuil2.Range("FR1SB").Value 'lit la valeur du seuil bas
seuilhaut = Feuil2.Range("FR1SH").Value 'lit la valeur du seuil haut
valeur = Feuil2.Range("FR1VAL").Value 'lit la valeur (cette ligne est en jaune)
Call Module1.Feurouge(seuilbas, seuilhaut, valeur, 1)
'Feu rouge alerte budget
seuilbas = Feuil2.Range("FR2SB").Value 'lit la valeur du seuil bas
seuilhaut = Feuil2.Range("FR2SH").Value 'lit la valeur du seuil haut
valeur = Feuil2.Range("FR2VAL").Value 'lit la valeur
Call Module1.Feurouge(seuilbas, seuilhaut, valeur, 2)
'Feu rouge alerte processus
seuilbas = Feuil2.Range("FR3SB").Value 'lit la valeur du seuil bas
seuilhaut = Feuil2.Range("FR3SH").Value 'lit la valeur du seuil haut
valeur = Feuil2.Range("FR3VAL").Value 'lit la valeur
Call Module1.Feurouge(seuilbas, seuilhaut, valeur, 3)

' appel de la fonction jauge verticale
' L'ascenseur permet de faire varier la mesure à titre de démonstration
'Jauge urgence
seuilbas = Range("INDIC1SB").Value 'lit la valeur du seuil bas en H12
seuilhaut = Range("INDIC1SH").Value 'lit la valeur du seuil haut en H13
objectif = Range("INDIC1OBJ").Value 'lit la valeur de l'objectif
valeur = Range("INDIC1VAL").Value 'lit la valeur
Call Module2.jaugeV(seuilbas, seuilhaut, valeur, objectif, 1)
'Jauge normal
seuilbas = Range("INDIC2SB").Value 'lit la valeur du seuil bas en H12
seuilhaut = Range("INDIC2SH").Value 'lit la valeur du seuil haut en H13
objectif = Range("INDIC2OBJ").Value 'lit la valeur de l'objectif
valeur = Range("INDIC2VAL").Value 'lit la valeur
Call Module2.jaugeV(seuilbas, seuilhaut, valeur, objectif, 2)



Feuil1.Activate 'Appel de la page de signalisation
End Sub

Merci d’avance, je ne suis pas un grand connaisseur VB
0
désolés voila le message complet

Bonjour pour le boulot j’ai paramétré un tableau de bord alimenté à partir d’une base des données, ça marchait mais depuis une semaine il m’affiche « run time error ‘1004 : méthode ’range of Object worksheet failed » . L’erreur se produit dans une page qui contient les indicateurs en chiffre pour alimenter les objets (histogramme, thermomètre ..) . je suis vraiment coince et en plus j’ai une réunion de reporting la semaine prochaine. J’ai besoin de votre aide SVP. Je peux transmettre le fichier si vous voulez.
Suite à ce message qu’on je veux déboguer, il l’ouvre cette fenêtre et il marque une ligne en jaune.

****************************
' Met à jour tous les indicateurs programmés
'**********************************
Private Sub CommandButton1_Click()
'appel de la fonction feu rouge
'Feu rouge alerte client
seuilbas = Feuil2.Range("FR1SB").Value 'lit la valeur du seuil bas
seuilhaut = Feuil2.Range("FR1SH").Value 'lit la valeur du seuil haut
valeur = Feuil2.Range("FR1VAL").Value 'lit la valeur (cette ligne est en jaune)
Call Module1.Feurouge(seuilbas, seuilhaut, valeur, 1)
'Feu rouge alerte budget
seuilbas = Feuil2.Range("FR2SB").Value 'lit la valeur du seuil bas
seuilhaut = Feuil2.Range("FR2SH").Value 'lit la valeur du seuil haut
valeur = Feuil2.Range("FR2VAL").Value 'lit la valeur
Call Module1.Feurouge(seuilbas, seuilhaut, valeur, 2)
'Feu rouge alerte processus
seuilbas = Feuil2.Range("FR3SB").Value 'lit la valeur du seuil bas
seuilhaut = Feuil2.Range("FR3SH").Value 'lit la valeur du seuil haut
valeur = Feuil2.Range("FR3VAL").Value 'lit la valeur
Call Module1.Feurouge(seuilbas, seuilhaut, valeur, 3)

' appel de la fonction jauge verticale
' L'ascenseur permet de faire varier la mesure à titre de démonstration
'Jauge urgence
seuilbas = Range("INDIC1SB").Value 'lit la valeur du seuil bas en H12
seuilhaut = Range("INDIC1SH").Value 'lit la valeur du seuil haut en H13
objectif = Range("INDIC1OBJ").Value 'lit la valeur de l'objectif
valeur = Range("INDIC1VAL").Value 'lit la valeur
Call Module2.jaugeV(seuilbas, seuilhaut, valeur, objectif, 1)
'Jauge normal
seuilbas = Range("INDIC2SB").Value 'lit la valeur du seuil bas en H12
seuilhaut = Range("INDIC2SH").Value 'lit la valeur du seuil haut en H13
objectif = Range("INDIC2OBJ").Value 'lit la valeur de l'objectif
valeur = Range("INDIC2VAL").Value 'lit la valeur
Call Module2.jaugeV(seuilbas, seuilhaut, valeur, objectif, 2)



Feuil1.Activate 'Appel de la page de signalisation
End Sub
0