Transfert tableau feuil1 à feuil2 (sans cellules vides)

Bonjour à tous,

(N'ayant pas vu de sujet ressemblant à la problématique que je m'apprête à poser)

Mon problème : J'ai un tableau en feuille 1 ("Janvier") et j'aimerais, à l'aide d'une MACRO, que les données se situant en ("D9:X26") ET celles se situant en ("D42:X47") se positionnent automatiquement sur le tableau de la feuille 2 ("Février") en ("D9:X26") sans que les cellules vides ne soient reproduites (pour que seulement les lignes remplies ne accommodent dans le nouveau tableau)...

Voilà, j'ai fait ça mais cela ne fonctionne pas ... (les lignes se reproduisent mais avec des espaces entre les tableaux collés...) help plz !!!

Sub MACROFEVRIER01()

'

' MACROFEVRIER01 Macro

'

'

Sheets("Janvier").Select

Range("D9:X26").Select

Selection.Copy

Sheets("Février").Select

Range("D9:X26").Select

ActiveSheet.Paste

Sheets("Janvier").Select

Range("D42:X47").Select

Selection.Copy

Sheets("Février").Select

Range("D21:X26").Select

ActiveSheet.Paste

End Sub

Bonjour,

Je ne vais pas donner de code mais au moins des pistes à explorer pour ce que tu souhaites faire.

En clair ton code se contente de copier et de coller les donnés, c'est donc normal que ça te prenne aussi les lignes vides.

Ce que je te conseille de faire c'est de créer un tableau en VBA, puis de faire une boucle pour passer sur chacune de tes lignes (un for par exemple ça devrait faire l'affaire).

Dans ton for, tu vas mettre un If, qui va contrôler que ta cellule n'est pas vide, et si la condition est validée, tu enregistres la ligne dans ton tableau.

Une fois ta boucle terminée, tu vas sur ton autre feuille et tu ressors le contenu de ton tableau.

Je te laisse essayer, ça, bonne chance

Bonjour Ausecour, malheureusement mon problème n'est toujours pas à ce jour résolu.

Un similaire existait déjà dans le répertoire des sujets mais la solution donnée utilisait la fonction "SI", alors que là précisément ce que j'aimerais c'est qu'on utilise la macro sur cette matrice déjà existante (sans avoir à refaire entièrement un nouveau tableau) pour résoudre ce problème...

Bonjour,

Voici ce que je propose :

Le debut de ton programme reste le même, mais le second copier coller change un peu, je vais regarder dans ce que tu as copié, jusqu'où la colonne D est remplie, en partant vers le bas à partir de la cellule D9, et je garde cette information à ma façon.

Une fois que c'est fait je colle simplement en dessous de cette dernière ligne et hop! c'est fait

Bon c'est du bricolaje par contre, c'est nettement améliorable mais bon, si ça te convient

Bonsoir Ausecour,

Ta solution fonctionnes parfaitement ... je te remercie infiniment pour le temps que tu as pu consacré à ce sujet !

Je vais un peu creuser ta proposition de MACRO quand même (qui a priori fonctionne super bien) et demain si je n'y vois aucune chose supplémentaire à demander sur ce topic, je fermerai mon poste. Encore merci

Voilà

Bonsoir Ausecour,

Ta solution fonctionnes parfaitement ... je te remercie infiniment pour le temps que tu as pu consacrer à ce sujet !

Je vais un peu creuser ta proposition de MACRO quand même (qui a priori fonctionne super bien) et demain si je n'y vois aucune chose supplémentaire à demander sur ce topic, je fermerai mon poste. Encore merci

Voilà, en fait il n'y a plus qu'un petit problème, c'est que la 2nde sélection à recopier (D42:D47) se copie/colle automatiquement à la suite de la 1ère sélection (même si les 5 lignes sont vides) ce qui a pour conséquences l'allongement du tableau de la Feuil 2 (où on colle les données récupérées) car pas assez d'espace... J'ai vu que tu avais rajouté dans la MACRO à savoir :

If Range("D10") = "" Then

Cellule_depart = Cells(10, 4).Address

Else

Cellule_depart = Cells(Range("D9").End(xlDown).Row + 1, 4).Address

End If

Mais je n'arrive pas à faire en sorte que les données de la 2nde sélection (D42:D47) ne se copient/collent pas si cellules vides... Aurais tu une solution à me proposer pour en conclure avec ce problème ?

Bonjour,

Il faut modifier un peu le code pour prendre ce cas en compte :

Sub MACROFEVRIER01()
'
' MACROFEVRIER01 Macro
'

'
    Sheets("Janvier").Select
    Range("D9:X26").Select
    Selection.Copy
    Sheets("Février").Select
    Range("D9:X26").Select
    ActiveSheet.Paste

If Range("D10") = "" Then
Cellule_depart = Cells(10, 4).Address
Else
Cellule_depart = Cells(Range("D9").End(xlDown).Row + 1, 4).Address
End If

    Sheets("Janvier").Select
    If Range("D42") = "" Then 'Bien mettre ce code après avoir sélectionné la feuille Janvier, sinon le programme regarde la cellule D42 de la feuille Février
        Exit Sub
    End If
    Range("D42:X47").Select
    Selection.Copy
    Sheets("Février").Select
    Range(Cellule_depart).Select
    ActiveSheet.Paste

End Sub

ça marche parfaitement. Merci beaucoup pour ton aide !

Problème résolu.

De rien!

Si tu as d'autres questions à l'avenir, n'hésite pas à repasser par le forum

Rechercher des sujets similaires à "transfert tableau feuil1 feuil2 vides"