Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
Dim i As Integer
For i = 2 To Range("D65536").End(xlUp).Row
If Cells(i, 4).Value <> "" Then
Cells(i, 1).Value = "A" & i
Cells(i, 2).Value = "B" & i
Cells(i, 3).Value = "C" & i
Cells(i, 8).Value = "H" & i
Cells(i, 9).Value = "I" & i
Cells(i, 11).Value = "K" & i
End If
Next i
For t = 3 To Range("D65536").End(xlUp).Row
If IsEmpty(Range("A" & t)) Then Range("A" & t) = Range("A" & t - 1)
If IsEmpty(Range("B" & t)) Then Range("B" & t) = Range("B" & t - 1)
If IsEmpty(Range("C" & t)) Then Range("C" & t) = Range("C" & t - 1)
If IsEmpty(Range("H" & t)) Then Range("H" & t) = Range("H" & t - 1)
If IsEmpty(Range("I" & t)) Then Range("I" & t) = Range("I" & t - 1)
If IsEmpty(Range("K" & t)) Then Range("K" & t) = Range("K" & t - 1)
Next t
Bonjour / Bonsoir à tous, Salut Hulk
Holala, bien en retard le Efgé 😛
Mais je l'ai fait, je le poste :
Code:
Sub ESSAI()
Dim Derligne As Long
[COLOR=seagreen][B]'Trouver la denière cellule (ligne) non vide de la colonne D[/B][/COLOR]
Derligne = Range("D" & Application.Rows.Count).End(xlUp).Row
[B][COLOR=seagreen]'remplir les lignes jusqu'a la derniere ligne de la colonne D en paetant de la ligne 3[/COLOR][/B]
For i = 3 To Derligne
[COLOR=seagreen][B]'Pöur les colonnes de 1 à 3 (A à C)[/B][/COLOR]
For k = 1 To 3
[COLOR=seagreen][B]'Si la celule en dessous est vide[/B][/COLOR]
If Cells(i + 1, k) = "" Then Cells(i, k) = Cells(i - 1, k)
[B][COLOR=seagreen]'Prochaine colonne[/COLOR][/B]
Next k
[COLOR=seagreen][B] 'Pöur les colonnes de 1 à 3 (H à I)[/B][/COLOR]
For k = 8 To 9
[B][COLOR=seagreen]'Si la celule en dessous est vide[/COLOR][/B]
If Cells(i + 1, k) = "" Then Cells(i, k) = Cells(i - 1, k)
[COLOR=seagreen][B]'Prochaine colonne[/B][/COLOR]
Next k
[COLOR=seagreen][B]'Si la colonne K est vide ....[/B][/COLOR]
If Cells(i + 1, 11) = "" Then Cells(i, 11) = Cells(i - 1, 11)
[COLOR=seagreen][B]"Ligne suivante[/B][/COLOR]
Next i
End Sub
Cordialement EDIT: Après relecture, Hulk me semble bien placé (et ce n"est par peur de la force physique.... 😀😉 )
Abondance de biens ne nuit pas...
Une autre proposition :
Code:
[COLOR="DarkSlateGray"][B]Sub toto()
Dim lCol, tCol$, i&, j&
lCol = Array("A", "B", "C", "H", "I", "K")
tCol = "D"
For i = 3 To IIf(IsEmpty(Range(tCol & 2)), 1, Columns(tCol).Resize(Range(tCol & 1).End(xlDown).Row, 1).Rows.Count)
For j = 0 To UBound(lCol)
If IsEmpty(Range(lCol(j) & i)) Then
Range(lCol(j) & i).Value = Range(lCol(j) & i).Offset(-1, 0).Value
End If
Next j
Next i
End Sub[/B][/COLOR]
[COLOR="DarkSlateGray"][B]Sub tata()
Dim lCol, tCol$, i&, j&
lCol = Array("A", "B", "C", "H", "I", "K")
tCol = "D"
i = 3
Do Until IsEmpty(Range(tCol & i))
For j = 0 To UBound(lCol)
If IsEmpty(Range(lCol(j) & i)) Then
Range(lCol(j) & i).Value = Range(lCol(j) & i).Offset(-1, 0).Value
End If
Next j
i = i + 1
Loop
End Sub[/B][/COLOR]
Il y en a au moins une : la procédure d'Habitude ne fait pas exactement la même chose que votre procédure originale. Si par exemple vous laissez vide la cellule D5, votre procédure (comme la mienne) arrête le traitement à la ligne 4.
Celle d'Habitude continue jusqu'à la dernière ligne non vide de la colonne D. C'est d'ailleurs la raison qui m'a fait proposer une solution conforme à votre modèle.
Merci ROGER2327 pour cette précison.( je n'avais pas testé cette possibilité avec une cellule vide comprise entre 2 celulles remplies dans ma colonne D.)
Difficile de rivaliser avec Roger l'artiste.
L'amélioration de code est sa spécialité
Mais ceci devrait faire l'affaire.
Code:
For t = 3 To Range("D65536").End(xlUp).Row
If IsEmpty(Range("D" & t)) Then Exit For
If IsEmpty(Range("A" & t)) Then Range("A" & t) = Range("A" & t - 1)
If IsEmpty(Range("B" & t)) Then Range("B" & t) = Range("B" & t - 1)
If IsEmpty(Range("C" & t)) Then Range("C" & t) = Range("C" & t - 1)
If IsEmpty(Range("H" & t)) Then Range("H" & t) = Range("H" & t - 1)
If IsEmpty(Range("I" & t)) Then Range("I" & t) = Range("I" & t - 1)
If IsEmpty(Range("K" & t)) Then Range("K" & t) = Range("K" & t - 1)
Next t
Ou
peut être
Code:
c = Array(1, 2, 3, 8, 9, 11)
For t = 3 To Range("D65536").End(xlUp).Row
If IsEmpty(Range("D" & t)) Then Exit For
For j = 0 To 5 'UBound(c)
If IsEmpty(Cells(t, c(j))) Then Cells(t, c(j)) = Cells(t - 1, c(j))
Next j
Next t
- 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