Copier-coller cellule jusqu'à ligne non vide

Bonjour à tous,

Je cherche à copier-coller la cellule A1 jusqu'à la dernière ligne de la colonne B (sachant que dans mon fichier cette ligne peut varier, ici il s'agit de la ligne 14). J'ai pour habitude d'utiliser ctrl + shit + flèche vers le bas et de coller ctrl+V mais cela me sélectionne toute la colonne A et je ne comprends pas pourquoi.

Je souhaite ajouter cette fonction a une macro que j'ai créée. Quelqu'un aurait-il une idée ? Je ne pense pas que ce soit compliqué mais je n'ai pas trouvé...

Merci d'avance

204copier-coller-a1.xlsx (12.08 Ko)

Bonjour

On ne vois pas bien ta macro dans le classeur exemple....

Sinon, essai ceci:

With Sheets("Feuil1") 'nom de lafeuille a adapter
    .Range(.Cells(1, 1), .Cells(.Rows.Count, 2).End(3)(1, 0)).FormulaLocal = .Cells(1, 1).FormulaLocal
End With

Cordialement

Bonjour;,

une manière:

Sub colleA1enB()
With Sheets("feuil1")
Set desti = .[B65000].End(xlUp)
.Range("A1").Select: Selection.Copy Destination:=desti(2)
End With
End Sub

place ton curseur sur la cellule de départ de la recopie

exécute la macro recopie

j'espère que cela te convient, sinon donnes moi des précisions

479copier-coller-a1.xlsm (20.97 Ko)

Bonjour

Merci beaucoup à vous tous. J'ai pris l'une de vos formules que j'ai adaptée à ma macro et ça marche !

Bonne journée

Bonjour à tous (et à Efgé notamment),

J'ai utilisé la formule de Efgé ci-dessous,

With Sheets("Feuille 1")

.Range(.Cells(1, 1), .Cells(.Rows.Count, 2).End(3)(1, 0)).FormulaLocal = .Cells(1, 1).FormulaLocal

End With

et je me retrouve aujourd'hui face à un problème. En effet le nombre de lignes est plus grand que dans mon précédent exemple et cette macro ne me garde pas la mise en forme sur toutes les lignes de la colonne A (cf fichier joint).

Seriez-vous capable de m'expliquer ce que fait cette ligne : .Range(.Cells(1, 1), .Cells(.Rows.Count, 2).End(3)(1, 0)).FormulaLocal = .Cells(1, 1).FormulaLocal pour que je puisse la modifier ? En effet je ne comprends pas à quoi correspondent les chiffres dans cette formule.

Merci d'avance.

Cordialement.

193copier-coller-a1.xlsx (11.70 Ko)

Bonjour tls25, le fil, le forum

Ma proposition ne faisait qu'étendre la formule ou la valeur de la cellule A1 sur la plage.

Pour copier réellement :

Sub copier_2()
With Sheets("Feuil1")
    .Cells(1, 1).Copy .Range(.Cells(1, 1), .Cells(.Rows.Count, 2).End(3)(1, 0))
End With
End Sub

Pour les explications:

.Range(.Cells(1, 1), .Cells(.Rows.Count, 2).End(3)(1, 0))

Le . rattache ce qui le suis au With

Regardons la plage:

.Range((cellule de début), (Cellule de fin))

Cellule de début :

.Cells(1,1)

La syntaxe .Cells(Ligne, colonne) donc .Cells(1,1) renvois la cellule ligne 1 colonne 1 de la feuille 1 (With Sheets("Feuil1")) soit :

Feuil1!$A$1

Cellule de fin :

.Cells(.Rows.Count, 2).End(3)

Cellule(nombre de lignes de la feuille, colonne 2).En remontant vers le haut (3 = Xlup)

Ceci nous donnes la dernière cellule remplie en colonne B soit dans le dernier exemple Feuil1!$B$16

Ensuite la plage doit finir en colonne A et pas en colonne B donc on décale la cellule trouvée vers la gauche

On peux utiliser .offset(0,-1) ou utiliser directement (1,0)

.Cells(.Rows.Count, 2).End(3)(1,0)

ou, si l'on préfère:

.Cells(.Rows.Count, 2).End(3).Offset(0, -1)

On arrive donc à Feuil1!$A$16

Si on reprend la formule .Range((cellule de début), (Cellule de fin)) on arrive à trouver la plage cherchée

.Range(Feuil1!$A$1, Feuil1!$A$16) <== Syntaxe simplifiée pour le besoin des explications

Cordialement

Bonjour,

Je vous remercie pour toutes ces explications. Tout me parait plus clair et la formule marche bien.

Bonne journée et merci beaucoup pour votre temps.

Rechercher des sujets similaires à "copier coller ligne vide"