Partage
  • Partager sur Facebook
  • Partager sur Twitter

VBA Copier dans un tableau

    6 septembre 2017 à 9:27:36

    Dim Lig     As Long
        Dim NbrLig  As Long
        Dim NumLig  As Long
      
        Sheets("Hebdo").Activate ' feuille de destination
      
        NumLig = 0
        With Sheets("Planning")     ' feuille source
        NbrLig = .Cells(65536, Col).End(xlUp).Row
        For Lig = 10 To NbrLig
            If .Cells(Lig, Col).Value <> "" Then
              .Range("A" & Lig, "F" & Lig).Value.Copy
              ActiveSheet.Rows("2:2").Select
              Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
              Cells(2, 1).Select
              ActiveSheet.Paste
            End If
        Next
        End With

    Bonjour,


    J'ai trouvé la solution pour mon problème précédent, je rencontre maintenant un problème lors du copier coller de mes données dans un tableau sur une autre feuille. J'ai chercher sur internet mais aucune des solutions ne fonctionne comme je le souhaite, je sais que c'est le range qui pose problème pour faire une copie dans un tableau. Je vous laisse regarder mon code actuel:

    Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      7 septembre 2017 à 14:57:17

      Bonjour, 

      Que veux-tu faire exactement ? On ne comprend rien...

      • Partager sur Facebook
      • Partager sur Twitter
        11 septembre 2017 à 22:19:48

        Bonjour,

        Il faudrait effectivement que tu détailles plus pour qu'on puisse mieux t'aider. Quand tu rencontres une erreur, indique nous la ligne et le message envoyé par Excel.

        En lisant ton code, je constate un problème sur cette ligne:

        .Range("A" & Lig, "F" & Lig).Value.Copy

        La propriété Value renvoie un texte, ce n'est pas un objet ayant une méthode Copy(). C'est Range qui a une méthode Copy(), il faut donc écrire ceci:

        .Range("A" & Lig, "F" & Lig).Copy
        • Partager sur Facebook
        • Partager sur Twitter
          29 septembre 2017 à 13:13:45

          Salut,

          Autre remarques:
          N'utilise pas les objets contextuels tel que ActiveWorrkbook, Activesheet, Sheets, Selection, Cells, Range. Une simple interraction (voulue ou non) de l'utilisateur suffira à faire planter ton programme.
          - N'utilise pas les methodes comme Activate ou Select, qui d'une part sont contextuelles, et d'autre part sont horriblement lentes.

          Comme alternative au copier / coller (qui pourrit le presse papier de l'utilisateur), tu peux passer par un tableau:

          Sub copyData(ByRef src As Excel.Range, ByRef dest As Excel.Range)
              Dim data() As Variant
              
              data = src.Value
              dest.Value = data
          End Sub

          Attention:
          - La mise en forme et les formules ne suivent pas.
          - Les plages src et dest doivent avoir la même taille.

          • Partager sur Facebook
          • Partager sur Twitter

          VBA Copier dans un tableau

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown