XL 2019 listrows.add erreur 1004

  • Initiateur de la discussion Initiateur de la discussion FLOW312020
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

FLOW312020

XLDnaute Nouveau
Bonjour à tous,

Après de nombreuses tentatives, je n'arrive pas résoudre mon problème. Lorsque la macro arrive sur la ligne "Set oLigneDestination" j'ai l'erreur 1004 qui apparait: Nous ne pouvons effectuer cette action car cela impliquerait le déplacement de cellules d'un tableau de votre feuille de calcul.

Je me doute que le problème vient du fait qu'en dessous de mon tableau dans lequel j'applique le "Listrows.add", j'ai un autre tableau deux lignes plus bas. En effet sans avoir de tableau sous ce tableau, la macro fonctionne parfaitement. Pour palier au problème j'ai créé une variante du code dessous pour qu'une ligne soit insérée par la macro avant d'appliquer le listrows.add. La ligne s'insère bien mais le problème persiste avec le même code erreur. Idem en ajoutant AlwaysInsert:=True après le .add

J'espère que vous saurez m'aider par ce que là pour le coup je sèche complet!
ps: je débute plus ou moins en vba ou du moins j'ai encore beaucoup de choses à apprendre

VB:
Sub Ajoute_Ligne(Contenu As String, onomTableau As ListObject)
    ' Ajoute les informations de la LigneSource dans le tableau de destination
   
    Dim PositionLigneDestination As Long
    Dim oLigneDestination As ListRow
   
    Set oLigneDestination = onomTableau.ListRows.Add
   
    PositionLigneDestination = oLigneDestination.Index + 1

    onomTableau.Range.Cells(PositionLigneDestination, onomTableau.ListColumns(1).Index) = Contenu
   
    Set oLigneDestination = Nothing
End Sub

Merci
 
Dernière édition:
Bonjour FLOW312020
Bonjour le Fil(cp4) ,le Forum
En regardant la procédure #1 , je me suis dit que la Ligne Cible ne doit elle pas être définie ainsi
VB:
Set oLigneDestination = onomTableau.ListRows.Add   'Ici on ajoute une Ligne
    PositionLigneDestination = oLigneDestination.Index 'Donc Sans le +1
ou plus simplement
VB:
Set oLigneDestination = onomTableau.ListRows.Add
       onomTableau.Range.Cells(oLigneDestination.index, onomTableau.ListColumns(1).Index)
Non Testée
il manque peut être aussi une référence a une feuille Cible ????
Bonne journée
jean marie[/Code]
 
Dernière édition:
Bonjour.
Pourquoi diable utiliser la propriété Range du ListObject au lieu de celle du ListRow ?
Mais ceci n'explique pas par quoi est empêché le Add
S'il n'y avait pas ce problème le tout tiendrait en une seule instruction :
VB:
Sub Ajoute_Ligne(ByVal Contenu As String, ByVal onomTableau As ListObject)
   onomTableau.ListRows.Add(AlwaysInsert:=True).Range(1, 1).Value = Contenu
   End Sub
Il faudrait faire la manoeuvre d'insérer une ligne jusqu'à ce qu'on y arrive (est-ce que la dernière cellule réputée utilisée serait arrivée jusqu'à la dernière de la feuille ?) et une fois trouvé, le refaire une dernière fois sous enregistrement d'une nouvelle macro, puis étudier le code …
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
580
Retour