Copier une colonne après plusieurs cellules vides

Bonjour,

Dans le cadre de reporting, je suis amené à recevoir un tableau dans une forme donnée(celui joint) et je cherche à copier la dernière colonne dans son intégralité jusqu'à la dernière cellule non vide. chaque trimestre une colonne sera ajouté, je ne peux donc pas me fier aux numéros des colonnes.

Dans mon code, je ne comprends pas pourquoi, les sélections copié n'ont aucune valeur

Sub testfinal()
Dim i As Integer
Dim j As Integer

i = 6
j = 1
While (Cells(2, i).Value <> "")
i = i + 1

Wend

While (Cells(j, i - 1).Value <> "")
j = j + 1

Wend
Range(Range("A2").Offset(0, i - 1), Range("A2").Offset(j, i - 1)).Copy

Range("H8").Select
ActiveCell.PasteSpecial Paste:=xlPasteValues
End Sub

Pouvez-vous m'aider?

Je vous remercie et vous souhaite une bonne année

11please.xlsx (11.77 Ko)

Bonsoir Tatss

Pourquoi vouloir utiliser du VBA, c'est faisable en 3 opérations

1) Filtrer valeurs non vide

2) CTRL+MAJ + Flèche bas pour sélectionner toute la colonne

3) Copier / Collage spécial : valeur

A+

Bonsoir,

Un essai :

si le but est de récupérer les données de la dernière colonne d'un fichier du type fourni, alors que ce tableau sera agrandi à chaque envoi, alors il "suffit" de rechercher la dernière colonne "non vide" du fichier ainsi que la dernière cellule non vide de cette colonne.

Dernière colonne non vide de la ligne 1 :

Dim DerCol As Integer
DerCol = Cells(1, Columns.Count).End(xlToLeft).Column

Dernière cellule non vide de cette colonne :

Dim DerLig As Long
DerLig = Cells(Rows.Count, DerCol).End(xlUp).Row

La plage à copier et à coller sur la feuille "MaFeuille" à partir de la cellule "A1" du classeur MonClasseur" :

Range(Cells(1,DerCol),Cells(DerLig,DerCol).Copy Destination:=Workbook("MonClasseur").Sheets("MaFeuille").Range("A1")

Tout ça si j'ai bien compris la demande, et à savoir qu'il y a peut-être plus simple... et surtout voir si cela fonctionne !

@ bientôt

LouReeD

Bonjour,

Tout comme mes collègues, je ne comprends pas trop le but de la manip'...

Comme tu utilises un Tableau Structuré (déjà un bon point), la recopie de la dernière colonne peut aisément se faire avec une ligne de code :

Sub copi()
With Range("Tableau5[#All]")
    .Columns(.Columns.Count).Copy .Columns(.Columns.Count + 1)
End With
End Sub

Ou :

Sub copi2()
With Range("Tableau5[#All]").ListObject
    .ListColumns(.ListColumns.Count).Range.Copy .Range(, .ListColumns.Count + 1)
End With
End Sub

Sous réserve d'avoir compris...

Bonne journée

Bonjour,

Cousinhub, bonjour, en fait j'aurais du écrire : il y a CERTAINEMENT plus simple... Mais je n'ai toujours pas enregistré toutes les fonctions des tableaux structurés... Pauvre de moi...

Merci pour lui bien qu'on ne sache pas exactement le process voulu.

@ bientôt

LouReeD

ça a marché niquel.

Merci à vous, bonne journée

Bonsoir,

merci pour votre retour, mais pour les prochains visiteurs : qu'est-ce qui a marché nickel ?

@ bientôt

LouReeD

Bonsoir à tous !

merci pour votre retour, mais pour les prochains visiteurs : qu'est-ce qui a marché nickel ?

Vous êtes bien indiscret jeune homme....!

La précision ! voilà ce qui m'anime !

Non sérieusement, c'est juste pour savoir bien que toutes les réponses se ressemble !
Mais tout de même pour les prochains visiteurs...

@ bientôt

LouReeD

Bonsoir à tous de nouveau !

@LouReed : En réalité, je valide totalement votre interrogation ...

Je vous taquinais moins que le demandeur....

Rechercher des sujets similaires à "copier colonne vides"