Excel VBA - Transfert tableau à lignes variables + compléter

Bonjour à toutes et tous,

Je reviens sur ce forum, après avoir trouvé une première aide très pertinente de Mr Yvouille.

Je pense qu'il faut encore utiliser du VBA pour résoudre ce problème.

Mon problème est le suivant, et répond aux mêmes contraintes que dans mon précédent post :

https://forum.excel-pratique.com/excel/excel-inserer-tableau-sous-colonne-a-lignes-variables-t74458.html

J'ai deux tableaux dans deux feuilles différentes. Le résultat est affiché en feuille 3.

  • Je dois donc transférer mon tableau de la feuille 2 (à lignes variables) vers mon tableau en feuille 1, à la suite de celui-ci (et sans espace).
  • Par ailleurs, le transfert du tableau feuille 2 vers feuille 1 ne doit pas prendre en compte la première ligne des intitulés.
  • Une fois le tableau feuille 2 collé à la suite du tableau feuille 1 (sans espace et sans la ligne des intitulés), il faut que la macro complète les cellules vides (pour la colonne "B vert" et colonne "C rouge) jusqu'à la fin du tableau, en reprenant les cellules du dessus (pour B:B ==> a1b3 et pour C:C ==> a1b4).

Une fois cette première macro effectuée, il ne me restera plus qu'à exécuter la macro proposée par Yvouille dans le lien précisé ci-dessus.

J'ai essayé avec la fonction "=si(estvide(etc... ) " mais ça marche pas

Pour compléter mes cellules vides dans un tableau (entête du tableau + cellules vides de la colonne) j'utilise le code suivant :

Sheets("CPR").Activate
    Columns("A:A").Insert Shift:=xlToRight
    Range("A1").FormulaR1C1 = "entête"
    Range("A2").FormulaR1C1 = "machin"
    Range("A2").AutoFill Destination:=Range("A2:A" & [B65000].End(xlUp).Row)
    Range("A1:A1").Select

    Application.ScreenUpdating = False

End Sub

Mais cette macro fonctionne pour des paramètres prédéfinis (ici "entête" et "machin"). Il faudrait que ma macro se réfère à une cellule précédente après avoir fait mon collage du tableau feuille 2 sous le tableau feuille 1, sans espace et sans intitulé. La macro ci-dessus irait alors chercher les caractères présents dans les cellules du tableau feuille 1.

J'espère avoir été le plus clair possible.

Merci d'avance pour votre aide,

Je reste connecté !

Je dois peut-être simplifier mon problème pour obtenir davantage de réponses ?

Bonjour,

Sub F2versF1()
    Dim n%, k%, ls%, F2 As Range
    With Worksheets("Feuil2")
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        k = .Cells(1, .Columns.Count).End(xlToLeft).Column
        Set F2 = .Range(.Cells(2, 1), .Cells(n, k))
    End With
    With Worksheets("Feuil1")
        ls = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        .Cells(ls, 1).Resize(n - 1, k).Value = F2.Value
        .Range(.Cells(ls - 1, 2), .Cells(ls - 1, 3)).AutoFill .Range(.Cells(ls - 1, 2), _
         .Cells(ls + n - 2, 3))
    End With
End Sub

La macro est dans Module1. Tu la lances par la boîte de dialogue macro...

Cordialement.

Bonjour !

Effectivement, c'est le résultat que je dois obtenir pour mes cours. Merci beaucoup !!

Le seul truc est que pour ma colonne "B", la cellule qui se remplie de manière automatique rajoute +1 à chaque fois. Comment faire pour fixer sans qu'excel ne rajoute ce 1 à chaque cellule de la colonne B?

Je ne comprends pas toutes les lignes. Votre site (très bien foutu d'ailleurs) me permettrait-il d'être autonome et de réaliser ce type de macro ? ou dois-je prendre des manuels pour apprendre davantage ?

- j'aimerais vraiment avoir votre niveau en VBA...

Je dois également intégrer des formules dans des cellules, dont la sélection peut varier selon la taille du tableau. ça serait possible que je vous montre mon problème ?

Curieux, ça ne le fait pas chez moi :

Essaie ainsi :

.Range(.Cells(ls - 1, 2), .Cells(ls - 1, 3)).AutoFill .Range(.Cells(ls - 1, 2), _
         .Cells(ls + n - 2, 3)), xlFillValues

sinon on procèdera autrement...

Bonjour !

J'ai essayé avec la modification de votre code, mais le décalage est toujours là.

Je transmets mon fichier pour illustrer mon prb.

Ce n'est plus le même fichier !!!

Tu as remplacé le contenu de la colonne B en feuille 1 par une valeur numérique.

Tu pouvais t'en rendre compte et le signaler !

C'est arrangé pour que les valeurs ne s'incrémentent pas (de la même façon qu'on procèdes en manuel pour le même effet...)

Ah désolé !! Merci beaucoup !! Je vais regarder les lignes que tu as modifié de suite !!

Merci pour le coup de pouce

En manuel, aussi bien pour forcer l'incrémentation que pour l'empêcher (selon le cas), au lieu de prendre un seule cellule pour étendre, tu en prends 2.

Cet effectivement ce que l'on fait en manuel ! Merci du conseil, je retiens !

Rechercher des sujets similaires à "vba transfert tableau lignes variables completer"