• Initiateur de la discussion Initiateur de la discussion Quizz
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Q

Quizz

Guest
Bonjour le forum,

J'ai dans un tableau 3000 lignes de suivi. Dans ma colonne A une liste de valeurs, et dans ma colonne b, une deuxième liste.
Voici mon modèle

A Paul
B
C
D Pierre
E
F
G Gilles

Je souhaite pouvoir via une macro ou une formule, remplir les cellules de la 2ème colonne sachant que leur valeur est égale à la valeur du dessus. Donc pour B & C, valeur = Paul, pour E & F, valeur = Pierre.

Merci d'avance.
 
Bonjour,

Ci dessous proposition en VBA

Option Explicit

Sub combler()
Dim lig_dep As Long, lig As Long
Dim valeur As String

If IsEmpty(Range("B1")) Then
MsgBox " pas de valeur sur 1° ligne"
Exit Sub
End If

Application.ScreenUpdating = False

lig_dep = 1
Do While lig <> 1
valeur = Cells(lig_dep, 2)
lig = Columns(2).Find("*", Cells(lig_dep, 2), , , xlByRows).Row

If lig = 1 Then
lig = Range("A65536").End(xlUp).Row
Range(Cells(lig_dep + 1, 2), Cells(lig, 2)) = valeur
Exit Do
Else
Range(Cells(lig_dep + 1, 2), Cells(lig - 1, 2)) = valeur
lig_dep = lig
End If

Loop

End Sub

A+
Michel
 
Bonjour Michel,

Merci pour cette macro excellente! J'ai juste un petit soucis, j'aurais dû te le préciser dans ma demande. En fait, pour certaines cellules, j'ai juste besoin d'une recopie de la cellule précédente si celle-ci est remplie. Ex :


A Paul Si j'utilise ta macro, voici A Paul
B Pierre le résultat que j'obtiens B Paul
C C Paul
D D Paul
E Gilles E Gilles
F F Gilles
G G Gilles

Alors que je voudrais :
A Paul As-tu une soluce? Merci d'avance!
B Pierre
C Pierre
D Pierre
E Gilles
F Gilles
 
Re,

effectivement, y'avait un p'tit piège

au lieu de:

Range(Cells(lig_dep + 1, 2), Cells(lig, 2)) = valeur
et
Range(Cells(lig_dep + 1, 2), Cells(lig - 1, 2)) = valeur

ecrire:
Range(Cells(lig_dep, 2), Cells(lig, 2)) = valeur
et
Range(Cells(lig_dep, 2), Cells(lig - 1, 2)) = valeur

A+
Michel
 
Salut "Quizz "
bonsoir michel bonsoir le"FORUM"
as tu essayé via Edition /Atteindre/cellules /cellules vides
puis tu sélectionnes celon le sens dans lequel la cellule doit être remplie exemple
A1 =Paulsi tu veux remplir B1 ,C1 avec Paul tu tapes = puis tu appuyes sur la touche Haut ensuite CTRL+ Entrée
B1
C1
D1=Jean si tu veux que les cellules B1,C1 soient rempli par Jean la procédureEdition /Atteindre/cellules /cellules videstu sélectionnes la cellule C1 avec CTRL enfoncée pour changer la cellule active
ensuite tu appuyes sur la touche bas enfin CTRL +Entrée
E1
F1
G1
H1=pierre
A+++Jean Marie
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
9
Affichages
452
Retour