Microsoft 365 VBA coller valeur sur la première ligne vide

raf26

XLDnaute Occasionnel
Bonjour le forum,

J'ai besoin de votre aide pour une macro

Je souhaite copier / coller les valeurs (seulement les valeurs) d'une sélection dans la première ligne vide d'un tableau MAIS à partir de la colonne B (la colonne A de ce tableau sera complétée manuellement).

Je précise que les valeurs C5:I5 de la feuille Donnees seront supprimées par une autre macro après la copie.

Ci-joint un fichier test (aucune macro)

Merci d'avance et bon week-end de Pâques à vous.

Cordialement
 

Pièces jointes

  • Classeur101.xlsx
    12.2 KB · Affichages: 8
Dernière édition:
Solution
Bonsoir,
Une table structurée n'a pas vocation a être limitée et comme le dit @job75 (que je salue ) à avoir des lignes vides .
Votre objectif semble de vouloir garder un nombre de lignes fixe, c'est votre choix
mais n'effectuez pas la macro trop de fois, le tableau va être vite rempli .
VB:
Option Explicit
Sub Importer()
Dim Wsd As Worksheet, Line As Range, Target As Range
Dim Lr As Long, Dt As Long
    Set Wsd = Worksheets("donnees")
        Lr = Wsd.Cells(Wsd.Rows.Count, "C").End(xlUp).Row
        Dt = [Import[#Headers]].Row
        For Each Line In Wsd.Range("C5:I" & Lr).Rows
            Set Target = [Import[Nom]].Find("", LookIn:=xlValues, lookat:=xlWhole)
            If Not Target Is Nothing Then...

fanch55

XLDnaute Barbatruc
Bonjour
code adapté :
VB:
Sub Importer()
Dim Wsd As Worksheet
Dim Lr As Long, K As Long
    Set Wsd = Worksheets("donnees")
        Lr = Wsd.Cells(Wsd.Rows.Count, "C").End(xlUp).Row
        For Each Line In Wsd.Range("C5:I" & Lr).Rows
            K = [Import].ListObject.ListRows.Add.Index
            [Import].Cells(K, 2).Resize(, 7) = Line.Value
        Next
    Set Wsd = Nothing
End Sub
 

raf26

XLDnaute Occasionnel
Bonjour fanch55

Merci pour ton retour, marche nickel sur mon fichier test.

Par contre, j'avais mal expliqué le tableau de destination (Import) dans ce fichier test.

Sur mon fichier réel, le tableau Import est déjà dimensionné, du coup la macro bloque

Ci-joint le fichier test modifié qui ressemble plus à mon fichier réel

Cordialement
 

Pièces jointes

  • Classeur102.xlsm
    19.9 KB · Affichages: 11

job75

XLDnaute Barbatruc
Bonsoir raf26, fanch55,

Les tableaux structurés ne sont pas faits pour fonctionner avec des lignes entièrement vides.

Mais bon vous pouvez toujours utiliser cette macro :
VB:
Sub Importer()
Dim c As Range
With [Import]
    Set c = .Columns(2).Find("*", , xlValues, , , xlPrevious)
    With Sheets("Donnees").[C4].CurrentRegion.Resize(, 7)
        If .Rows.Count > 1 Then c(2).Resize(, 7) = .Rows(2).Resize(.Rows.Count - 1).Value
    End With
    .Parent.Activate 'facultatif
End With
End Sub
A+
 

fanch55

XLDnaute Barbatruc
Bonsoir,
Une table structurée n'a pas vocation a être limitée et comme le dit @job75 (que je salue ) à avoir des lignes vides .
Votre objectif semble de vouloir garder un nombre de lignes fixe, c'est votre choix
mais n'effectuez pas la macro trop de fois, le tableau va être vite rempli .
VB:
Option Explicit
Sub Importer()
Dim Wsd As Worksheet, Line As Range, Target As Range
Dim Lr As Long, Dt As Long
    Set Wsd = Worksheets("donnees")
        Lr = Wsd.Cells(Wsd.Rows.Count, "C").End(xlUp).Row
        Dt = [Import[#Headers]].Row
        For Each Line In Wsd.Range("C5:I" & Lr).Rows
            Set Target = [Import[Nom]].Find("", LookIn:=xlValues, lookat:=xlWhole)
            If Not Target Is Nothing Then
                [Import[Nom]].Rows(Target.Row - Dt).Resize(, 7) = Line.Value
            Else
                MsgBox "Il n'y a plus de place pour importer !!!", vbCritical
            End If
        Next
    Set Wsd = Nothing
End Sub

Par ailleur, la formule de la colonne Total pour ne pas afficher de zéro non voulu, peut-être modifiée ainsi:
=SI(NBVAL(IMPORT[@[Poires]:[Abricot]])>0;SOMME(IMPORT[@[Poires]:[Abricot]]);"")

et la validation de la colonne Contrôle Commande peut être simplifiée dans votre cas :
1650140498257.png
 

Discussions similaires

Statistiques des forums

Discussions
314 628
Messages
2 111 333
Membres
111 104
dernier inscrit
JEMADA