Copie cellule précedente VBA

Le
François
Bonjour tous,

Je sche sur un "petit" problme.
L'nonc : j'ai un fichier avec des donnes en colonne A,
et j'aimerai que excel copie la cellule, si la ou les
cellules suivantes sont vides, jusqu' trouver une
nouvelle donne dans la plage A1:Ax
exemple :
A1 : 1
A2 : vide
A3 : 2
A4 : 3
A5 : vide
Rsultat :
A1 : 1
A2 : 1
A3 : 2
A4 : 3
Il se peut qu'il y ait plus qu'une cellule vide (copie
multiple)

Merci pour votre aide,

Cordialement,

Franois
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
Nicolas B.
Le #1840640
Salut François,

En reprenant ton exemple, tu mets en B1 : ¡, puis en B2 et à étirer
vers le bas :
=SI(A2="";B1;A2)

Tu peux ensuite faire un copier coller spécial Valeurs pour écrire les
résultats des formules en dur.


A+
Nicolas B.


François wrote:
Bonjour à tous,

Je sèche sur un "petit" problème.
L'énoncé : j'ai un fichier avec des données en colonne A,
et j'aimerai que excel copie la cellule, si la ou les
cellules suivantes sont vides, jusqu'à trouver une
nouvelle donnée dans la plage A1:Ax
exemple :
A1 : 1
A2 : vide
A3 : 2
A4 : 3
A5 : vide ...
Résultat :
A1 : 1
A2 : 1
A3 : 2
A4 : 3
Il se peut qu'il y ait plus qu'une cellule vide (copie
multiple)

Merci pour votre aide,

Cordialement,

François


François
Le #1840637
Salut Nicolas B.

J'avais exploré cette piste, mais malheureusement, elle ne
fonctionne pas si j'ai plusieurs cellules vides !
Exemple :
A1 : 1
A2 : vide
A3 : vide
A4 : 2
Là, la formule me retourne une cellule vide en A3.

De plus, si tu as une idée en VBA, car derrière j'ai
d'autre macros... Mais bon !

Merci pour tes pistes, je reste preneur d'une autre
solution.

Bien cordialement,

François

-----Message d'origine-----
Salut François,

En reprenant ton exemple, tu mets en B1 : , puis en B2
et à étirer

vers le bas :
=SI(A2="";B1;A2)

Tu peux ensuite faire un copier coller spécial Valeurs
pour écrire les

résultats des formules en dur.


A+
Nicolas B.


François wrote:
Bonjour à tous,

Je sèche sur un "petit" problème.
L'énoncé : j'ai un fichier avec des données en colonne
A,


et j'aimerai que excel copie la cellule, si la ou les
cellules suivantes sont vides, jusqu'à trouver une
nouvelle donnée dans la plage A1:Ax
exemple :
A1 : 1
A2 : vide
A3 : 2
A4 : 3
A5 : vide ...
Résultat :
A1 : 1
A2 : 1
A3 : 2
A4 : 3
Il se peut qu'il y ait plus qu'une cellule vide (copie
multiple)

Merci pour votre aide,

Cordialement,

François
.





J-Dan
Le #1840635
bonjour François,

en VBA, tu peux essayer ceci :

On Error Resume Next
Range(Range("A1"), Range("A65536").End(xlUp)).Select
For Each c In Selection
If c = "" Then c.Value = c.Offset(-1, 0)
Next

J-Dan

-----Message d'origine-----
Salut Nicolas B.

J'avais exploré cette piste, mais malheureusement, elle
ne

fonctionne pas si j'ai plusieurs cellules vides !
Exemple :
A1 : 1
A2 : vide
A3 : vide
A4 : 2
Là, la formule me retourne une cellule vide en A3.

De plus, si tu as une idée en VBA, car derrière j'ai
d'autre macros... Mais bon !

Merci pour tes pistes, je reste preneur d'une autre
solution.

Bien cordialement,

François

-----Message d'origine-----
Salut François,

En reprenant ton exemple, tu mets en B1 : , puis en
B2


et à étirer
vers le bas :
=SI(A2="";B1;A2)

Tu peux ensuite faire un copier coller spécial Valeurs
pour écrire les

résultats des formules en dur.


A+
Nicolas B.


François wrote:
Bonjour à tous,

Je sèche sur un "petit" problème.
L'énoncé : j'ai un fichier avec des données en
colonne



A,
et j'aimerai que excel copie la cellule, si la ou les
cellules suivantes sont vides, jusqu'à trouver une
nouvelle donnée dans la plage A1:Ax
exemple :
A1 : 1
A2 : vide
A3 : 2
A4 : 3
A5 : vide ...
Résultat :
A1 : 1
A2 : 1
A3 : 2
A4 : 3
Il se peut qu'il y ait plus qu'une cellule vide
(copie



multiple)

Merci pour votre aide,

Cordialement,

François
.


.






Nicolas B.
Le #1840632
J'avais exploré cette piste, mais malheureusement, elle ne
fonctionne pas si j'ai plusieurs cellules vides !


Ben si ça marche :

Dans ton exemple, je suis en B2, la formule est : =SI(A2="";B1;A2).
A2 est vide donc ça affiche la valeur B1 (et en B1 il y a la formule
¡) c'est-à-dire 1.

Je suis maintenant en B3. On a donc =SI(A3="";B2;A3).
A3 est vide, tout comme A2. On recopie donc la valeur en B2 soit 1.

Et ça continue comme ça...


A+
Nicolas B.


François wrote:
Salut Nicolas B.

J'avais exploré cette piste, mais malheureusement, elle ne
fonctionne pas si j'ai plusieurs cellules vides !
Exemple :
A1 : 1
A2 : vide
A3 : vide
A4 : 2
Là, la formule me retourne une cellule vide en A3.

De plus, si tu as une idée en VBA, car derrière j'ai
d'autre macros... Mais bon !

Merci pour tes pistes, je reste preneur d'une autre
solution.

Bien cordialement,

François


-----Message d'origine-----
Salut François,

En reprenant ton exemple, tu mets en B1 : ¡, puis en B2


et à étirer

vers le bas :
=SI(A2="";B1;A2)

Tu peux ensuite faire un copier coller spécial Valeurs


pour écrire les

résultats des formules en dur.


A+
Nicolas B.




Michel Gaboly
Le #1840622
Bonsoir,

Voici une solution en VBA :

Sub Recopie()
Dim c As Range, NumLigne As Long
' c correspond à la premère cellule non vode vers la bas
' en partant de A1. Si c est en ligne 2, il n'y a aucune
' cellule vide après A1, toujours vers le bas
Set c = Range("A1").End(xlDown)
NumLigne = c.Row - 1
If NumLigne <> 1 Then
Range(Range("A1"), Range("A" & NumLigne)).Select
Range(Range("A1"), Range("A" & NumLigne)) = Range("A1")
End If
End Sub

On peut bien sur affiner en remplaçant A1 par ActiveCell ou par le
résultat d'un choix, et faire un test pour éviter de recopier la valeur
jusqu'en ligne 65536 si toutes les cellules en-dessous de la cellule de
`référence sont vides.

Par exemple :

Sub Recopie()
Dim c As Range, NumLigne As Long
' c correspond à la première cellule non vide vers la bas
' en partant de A1. Si c est en ligne 2, il n'y a aucune
' cellule vide après A1, toujours vers le bas
' NB - si toutes les cellules sont vides en-dessous de la
' cellule active, c correspond à la ligne 65536.
Set c = Range("A1").End(xlDown)
NumLigne = c.Row - 1
If NumLigne <> 1 Then
MsgBox ActiveSheet.UsedRange.Rows.Count
' Adaptation de NumLigne si au-delà de la zone utilisée
' dans la feuille (par exemple 65 536 alors que seules les
' cellules A1 à F100 sont utilisées.
NumLigne = Application.WorksheetFunction.Min(NumLigne, ActiveSheet.UsedRange.Rows.Count)
Range(Range("A1"), Range("A" & NumLigne)).Select
Range(Range("A1"), Range("A" & NumLigne)) = Range("A1")
End If
End Sub



Bonjour à tous,

Je sèche sur un "petit" problème.
L'énoncé : j'ai un fichier avec des données en colonne A,
et j'aimerai que excel copie la cellule, si la ou les
cellules suivantes sont vides, jusqu'à trouver une
nouvelle donnée dans la plage A1:Ax
exemple :
A1 : 1
A2 : vide
A3 : 2
A4 : 3
A5 : vide ...
Résultat :
A1 : 1
A2 : 1
A3 : 2
A4 : 3
Il se peut qu'il y ait plus qu'une cellule vide (copie
multiple)

Merci pour votre aide,

Cordialement,

François


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

François
Le #1840621
Parfait !!!

Merci encore pour votre aide et longue vie au forum !


-----Message d'origine-----
Salut Nicolas B.

J'avais exploré cette piste, mais malheureusement, elle
ne

fonctionne pas si j'ai plusieurs cellules vides !
Exemple :
A1 : 1
A2 : vide
A3 : vide
A4 : 2
Là, la formule me retourne une cellule vide en A3.

De plus, si tu as une idée en VBA, car derrière j'ai
d'autre macros... Mais bon !

Merci pour tes pistes, je reste preneur d'une autre
solution.

Bien cordialement,

François

-----Message d'origine-----
Salut François,

En reprenant ton exemple, tu mets en B1 : , puis en
B2


et à étirer
vers le bas :
=SI(A2="";B1;A2)

Tu peux ensuite faire un copier coller spécial Valeurs
pour écrire les

résultats des formules en dur.


A+
Nicolas B.


François wrote:
Bonjour à tous,

Je sèche sur un "petit" problème.
L'énoncé : j'ai un fichier avec des données en colonne
A,


et j'aimerai que excel copie la cellule, si la ou les
cellules suivantes sont vides, jusqu'à trouver une
nouvelle donnée dans la plage A1:Ax
exemple :
A1 : 1
A2 : vide
A3 : 2
A4 : 3
A5 : vide ...
Résultat :
A1 : 1
A2 : 1
A3 : 2
A4 : 3
Il se peut qu'il y ait plus qu'une cellule vide (copie
multiple)

Merci pour votre aide,

Cordialement,

François
.


.






François
Le #1840608
Merci Michel pour ces précisions.

Bien cordialement,

François
-----Message d'origine-----
Bonsoir,

Voici une solution en VBA :

Sub Recopie()
Dim c As Range, NumLigne As Long
' c correspond à la premère cellule non vode vers la
bas

' en partant de A1. Si c est en ligne 2, il n'y a
aucune

' cellule vide après A1, toujours vers le bas
Set c = Range("A1").End(xlDown)
NumLigne = c.Row - 1
If NumLigne <> 1 Then
Range(Range("A1"), Range("A" &
NumLigne)).Select

Range(Range("A1"), Range("A" & NumLigne))
= Range("A1")

End If
End Sub

On peut bien sur affiner en remplaçant A1 par ActiveCell
ou par le

résultat d'un choix, et faire un test pour éviter de
recopier la valeur

jusqu'en ligne 65536 si toutes les cellules en-dessous de
la cellule de

`référence sont vides.

Par exemple :

Sub Recopie()
Dim c As Range, NumLigne As Long
' c correspond à la première cellule non vide vers la
bas

' en partant de A1. Si c est en ligne 2, il n'y a
aucune

' cellule vide après A1, toujours vers le bas
' NB - si toutes les cellules sont vides en-dessous
de la

' cellule active, c correspond à la ligne 65536.
Set c = Range("A1").End(xlDown)
NumLigne = c.Row - 1
If NumLigne <> 1 Then
MsgBox ActiveSheet.UsedRange.Rows.Count
' Adaptation de NumLigne si au-delà de la
zone utilisée

' dans la feuille (par exemple 65 536
alors que seules les

' cellules A1 à F100 sont utilisées.
NumLigne =
Application.WorksheetFunction.Min(NumLigne,

ActiveSheet.UsedRange.Rows.Count)
Range(Range("A1"), Range("A" &
NumLigne)).Select

Range(Range("A1"), Range("A" & NumLigne))
= Range("A1")

End If
End Sub



Bonjour à tous,

Je sèche sur un "petit" problème.
L'énoncé : j'ai un fichier avec des données en colonne
A,


et j'aimerai que excel copie la cellule, si la ou les
cellules suivantes sont vides, jusqu'à trouver une
nouvelle donnée dans la plage A1:Ax
exemple :
A1 : 1
A2 : vide
A3 : 2
A4 : 3
A5 : vide ...
Résultat :
A1 : 1
A2 : 1
A3 : 2
A4 : 3
Il se peut qu'il y ait plus qu'une cellule vide (copie
multiple)

Merci pour votre aide,

Cordialement,

François


--
Cordialement,

Michel Gaboly
http://www.gaboly.com


.




sabatier
Le #1822274
l'essentiel restant de ne pas se tromper dans la rédaction du cide....
jps (qui va sûrement faire un bode sur ce coup)

"Michel Gaboly" news:
' c correspond à la premère cellule non vode vers la bas


Michel Gaboly
Le #1822273
M'enfin :-)))

Les fautes de frappe dans les commentaires ne sont pas tout de
même pas si graves ;-)))

Quant au "cide", avec mes origines antillaises, j'ai bien compris
que tu voulais dire "cidre", ce qui semble pour le moins inat-
tendu de ta part. ;-)))))))



l'essentiel restant de ne pas se tromper dans la rédaction du cide....
jps (qui va sûrement faire un bode sur ce coup)

"Michel Gaboly" news:
' c correspond à la premère cellule non vode vers la bas



--
Cordialement,

Michel Gaboly
http://www.gaboly.com


jps
Le #1840591
:-))))))))))))))))))))
jps

"Michel Gaboly" news:
M'enfin :-)))

Les fautes de frappe dans les commentaires ne sont pas tout de
même pas si graves ;-)))

Quant au "cide", avec mes origines antillaises, j'ai bien compris
que tu voulais dire "cidre", ce qui semble pour le moins inat-
tendu de ta part. ;-)))))))



l'essentiel restant de ne pas se tromper dans la rédaction du cide....
jps (qui va sûrement faire un bode sur ce coup)

"Michel Gaboly" news:
' c correspond à la premère cellule non vode vers la bas



--
Cordialement,

Michel Gaboly
http://www.gaboly.com






Poster une réponse
Anonyme