OVH Cloud OVH Cloud

macro pour remplir les vides

5 réponses
Avatar
simplet
Bonjour,

J'ai une base de données où j'ai des vides. Je voudrais remplir ces
vides par une macro qui étends la valeur des champs vides avec la
dernière valeur du dessus. Ex:

Base avant macro

Robert 15000
20000
15000
Martine 18000

Base apres macro

Robert 15000
Robert 20000
Robert 15000
Martine 18000

5 réponses

Avatar
Daniel
Bonjour.
Est-ce que "Robert" et "15000" sont dans des cellules différentes ?
Est-ce que "20000" est dans la même colonne que "Robert" ?
Cordialement.
Daniel
"simplet" a écrit dans le message de news:

Bonjour,

J'ai une base de données où j'ai des vides. Je voudrais remplir ces vides
par une macro qui étends la valeur des champs vides avec la dernière
valeur du dessus. Ex:

Base avant macro

Robert 15000
20000
15000
Martine 18000

Base apres macro

Robert 15000
Robert 20000
Robert 15000
Martine 18000


Avatar
MonOnc'
bonjour Simplet,

avec les prénoms en colonne A et les nombres en B :

Sub FillEmptyRanges()
dim LastLine as long
LastLine = Range("B65536").End(xlUp).Row
For i = 2 To LastLine
If Range("A" & i) = "" Then
Range("A" & i) = Range("A" & i - 1)
End If
Next
End Sub

cordialement

simplet a pensé très fort :
Bonjour,

J'ai une base de données où j'ai des vides. Je voudrais remplir ces vides par
une macro qui étends la valeur des champs vides avec la dernière valeur du
dessus. Ex:

Base avant macro

Robert 15000
20000
15000
Martine 18000

Base apres macro

Robert 15000
Robert 20000
Robert 15000
Martine 18000


Avatar
Trirème
Bonjour simplet
Voici la forme VBA de la sélection des cellules vides combinée avec la
saisie dans plusieurs cellules en même temps.
Ceci devrait être rapide à l'exécution :

Sub RecopieCelluleLignPrec()
' ATTENTION : à l'issue de l'exécution les formules initiales seront
' copiées en valeur. Donc ne pas utiliser si on veut les conserver.

' Sélectionner au préalable toute la plage de la BD
' et lancer la macro (éventuellement associée à un bouton)
Set SelInit = Selection ' La sélection du départ
SelInit.SpecialCells(xlCellTypeBlanks).Select ' Sélectionne les vides
Selection = "=R[-1]C" ' Copie la valeur de la cellule du dessus
SelInit.Copy ' Copie toute la sélection du départ (y compris formules)...
SelInit.PasteSpecial Paste:=xlValues ' ... et colle en valeur, sur elle-même
Application.CutCopyMode = False
End Sub

Il me semble l'avoir vue en plus court, écrite par AV (commentaires à part)

Cordialement
Trirème

Bonjour,

J'ai une base de données où j'ai des vides. Je voudrais remplir ces
vides par une macro qui étends la valeur des champs vides avec la
dernière valeur du dessus. Ex:

Base avant macro

Robert 15000
20000
15000
Martine 18000

Base apres macro

Robert 15000
Robert 20000
Robert 15000
Martine 18000


Avatar
AV
Plus condensé :

Set plg = Range("A1", [A65536].End(3))
plg.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
[plg].Value = [plg].Value

AV
Avatar
Trirème
Il suffit de demander... et en 20 minutes
Tu dois sûrement être à Göteborg dans les starting-blocks :-)

Set plg = Range("A1", [A65536].End(3))
J'aime bien aussi la version où c'est l'utilisateur qui sélectionne

explicitement la plage à remplir.

Merci pour le rappel de mémoire.
Trirème