Erreur 1004- erreur défini par l'application ou par l'objet

Bonjour,

Avant tout, je vous souhaite une belle année 2021 !

J'ai une erreur '1004' à l'appel de la macro transpose_donnees du classeur Tranposition_de_donnees, qui fonctionnait très bien jusqu'à présent.

Comme son nom l'indique, elle permet de transposer un grand nombre de données.

Sub transpose_donnees()
Dim adresse_plage_valeurs As String

If (Interface_Copie.adresse_valeurs.Value = "") Then
'Recherche automatique de la zone à transposer
Sheets("Initial").Select
derniere_ligne = recherche_derniere_ligne(feuille:="Initial", colonne:=8)
derniere_colonne = recherche_derniere_colonne(feuille:="Initial", ligne:=1)
adresse_plage_valeurs = Range(Cells(2, 9), Cells(derniere_ligne, derniere_colonne)).AddressLocal
Else
adresse_plage_valeurs = valeur_plage_sur_IHM
End If

concatenation_colonnes adresse_plage_valeurs:=(adresse_plage_valeurs)
Quitter_interface
End Sub
Sub concatenation_colonnes(adresse_plage_valeurs As String)
Dim colonne_date As Long

Application.ScreenUpdating = False

feuille_blanche nom_feuille:="Initial"

'Initialisation des variables
Set plage_valeurs = Sheets("Initial").Range(adresse_plage_valeurs)
derniere_colonne_bloc = plage_valeurs.Item(1).Column - 1
derniere_colonne_valeurs = plage_valeurs.Item(plage_valeurs.Count).Column
lettre_derniere_colonne_bloc = LettreColonne((derniere_colonne_bloc))
derniere_colonne_en_lettre = LettreColonne((derniere_colonne_valeurs))
nb_lignes_bloc = plage_valeurs.Item(plage_valeurs.Count).Row - 1
nb_colonnes_bloc = derniere_colonne_bloc

'Création du bloc de données invariable qui sera reproduit autant de fois qu'il y a de dates
creation_bloc lettre_derniere_colonne_bloc:=(lettre_derniere_colonne_bloc), nb_lignes_bloc:=(nb_lignes_bloc)
mise_en_forme_onglet_final lettre_derniere_colonne_bloc:=(lettre_derniere_colonne_bloc), nb_colonnes_bloc:=(nb_colonnes_bloc)

'Visualisation avant procédure
For colonne_date = (derniere_colonne_bloc + 1) To derniere_colonne_valeurs
copie_bloc_date colonne_date:=(colonne_date), nb_lignes_bloc:=(nb_lignes_bloc), nb_colonnes_bloc:=(nb_colonnes_bloc), derniere_colonne_bloc:=(derniere_colonne_bloc)
Next

'MsgBox ("Procédure terminée")

Application.ScreenUpdating = True
End Sub

Function LettreColonne(c As Integer)
LettreColonne = Left(Cells(1, c).Address(0, 0), IIf(c < 27, 1, 2))
End Function

L'erreur d'exécution '1004' se produit sur la ligne de code surligné et après plusieurs recherches sur le web, je ne trouve pas de solution.

Je vous remercie par avance pour votre aide.

Hâte de lire vos réponses.

Bonjour,

parce que c vaut 0 à cet endroit ...

reste à comprendre pourquoi, mais ton fichier n'ayant pas de données ...

Bonjour Steelson,

Merci de votre réponse. En effet, LettreColonne = vide mais je ne comprends pas pourquoi.

Vous trouverez en pièce jointe un exemple de données que je souhaite transposer avec cette macro, sans succès pour le moment alors que cela fonctionnait jusqu'à présent.

Encore merci de votre aide.

10donnees.xlsx (144.90 Ko)

Re-

il faut indenter ton code pour y voir plus clair, et ne pas hésiter à mettre des debug.print

le problème vient d'ici

derniere_colonne_bloc = plage_valeurs.Item(1).Column - 1

qui vaut 0

  1. à quoi sert cette valeur ensuite ?
  2. quel est la finalité de la macro ?

je n'ai jamais utilisé cette syntaxee Item(1) sur une plage de données !!

Je pense avoir enfin compris !

Quand tu sélectionnes la plage, NE PAS SELECTIONNER la colonne A.

Bonjour,

Je ne suis pas le développeur de ce programme de code vba mais une simple utilisatrice, commanditaire d'un programme permettant de transposer des données d'une position en colonnes des variables (fichier Donnees) en données chiffrées en lignes (fichier Sortie_donnees_attendue - cf ce message).

Vous trouverez ci joint la sortie de la macro transpose-donnees attendue dans mon fichier de production.

J'espère que cela vous éclairera sur la finalité de la macro.

Encore merci de ton aide.

je te confirme que l'erreur 1004 disparait si tu ne sélectionnes pas la colonne A > as-tu essayé ?

s'il y a ensuite des écarts, c'est autre chose (je n'ai pas regardé)

Effectivement lorsque je ne sélectionne pas la colonne A, je n'ai plus l'erreur 1004 mais je n'obtiens pas la sortie nécessaire à ma production, décalage de données et pas de transposition.

C'est une autre sujet. Soit tu revoies le concepteur de la macro, soit je la reprends intégralement car je ne la comprends pas très bien !

Encore merci pour nos échanges.

Le concepteur a quitté notre société. Je suis surprise de la reprise intégrale car c'est une macro qui fonctionnait bien depuis 10 ans.

Je ne comprends pas ce qui la fait basculer en erreur. C'est surtout cette cause que je cherche à déterminer.

Selon moi, il n'y a pas d'erreur de code vba, c'est une erreur d'Excel. C'est en cela que je recherche un retour d'expérience dans ce forum.

Le concepteur a quitté notre société. Je suis surprise de la reprise intégrale car c'est une macro qui fonctionnait bien depuis 10 ans.

donc je te laisse ayant résolu le problème de l'erreur 1004

j'espère que d'autres pourront mettre la main à la pâte

un code de ce type non documenté est malheureusement perdu sans support

Bonjour,

si tu as excel 2016, tu ne dois plus avoir besoin de macro, tu dois pouvoir le faire avec PowerQuery

si tu as besoin de conseils, ouvre un nouveau sujet en explicitant ce que tu souhaites à l'aide des 2 fichiers, avant et après.

Rechercher des sujets similaires à "erreur 1004 defini application objet"