Remplir cellules vides d'une colonne en parallèle à une autre
Fermé
Oscar
-
Modifié le 22 août 2017 à 19:23
yg_be Messages postés 23471 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 février 2025 - 23 août 2017 à 20:11
yg_be Messages postés 23471 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 février 2025 - 23 août 2017 à 20:11
A voir également:
- Remplir cellules vides d'une colonne en parallèle à une autre
- Déplacer une colonne excel - Guide
- Organigramme a remplir word - Guide
- Trier une colonne excel - Guide
- Formule somme excel colonne - Guide
- Aller à la ligne dans une cellule excel - Guide
1 réponse
yg_be
Messages postés
23471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 février 2025
Ambassadeur
1 568
22 août 2017 à 21:25
22 août 2017 à 21:25
bonsoir, peux-tu partager le code que tu as déjà réalisé?
moi je ferais ainsi:
- parcourir la colonne B de haut en bas, ligne par ligne tant qu'elle n'est pas vide
- si la valeur de la colonne A pour la ligne en cours est vide, recopier en colonne A la valeur de la ligne précédente
qu'en penses-tu?
moi je ferais ainsi:
- parcourir la colonne B de haut en bas, ligne par ligne tant qu'elle n'est pas vide
- si la valeur de la colonne A pour la ligne en cours est vide, recopier en colonne A la valeur de la ligne précédente
qu'en penses-tu?
23 août 2017 à 03:59
Private Sub Remplir_Cellules_A()
Dim N As Long 'N Nom
Dim M As Long 'M Matière
N = 1
M = 1
' Exprimer la double condition, cellule dans la colonne B non vide et celle de A vide.
If (Sheets(Feuil1).Cells("M", 2)) <> "" And (Sheets(Feuil1).Cells("N", 2)) = "" Then
Sheets("Feuil1").Cells(65535, 1).End(xlUp)(2).Value = _
Sheets("Feuil1").Cells("N" - 1, 2)
End If
N = N + 1
M = M + 1
End Sub
Dans l'exécution pas à pas, la commande If présente un erreur '13', incompatibilité de type
23 août 2017 à 09:08
- en ajoutant "option explicit" en haut de module
- en remplaçant Sheets(Feuil1) par Sheets("Feuil1")
- en remplaçant "M" et "N" par le numéro de colonne
23 août 2017 à 19:33
Supposons les suivantes données pour la colonne A (Nom) et la B (Matières)
A : (Oscar)
B : (Science, Math, Français, Anglais)
Voici la macro :
Private Sub Remplir_Cellules_C()
Dim m As Long
Dim n As Long
m = 1 ' m fait référence à commencer à la ligne 2 (Colonne B Matières)
n = 2 ' n fait référence à commencer à la ligne 2 (colonne A Nom)
While Not IsEmpty(Sheets("Feuil1").Cells(m, 2))
Sheets("Feuil1").Cells(65535, 1).End(xlUp)(2).Value = _
Sheets("Feuil1").Cells(n, 1)
m = m + 1 ' passer à la ligne prochaine pour faire le test
n = n + 1
Wend
End Sub
Le problème de cette macro, c’est qu’elle compte le nombre de lignes utilisées (non vides) et elle copie le nom ‘Oscar’ autant de fois que les cellules dans la colonne B sont non vides. Alors, à la première exécution j’ai ‘Oscar’ sur 5 cellules, pendant que la colonne B comporte que 4 données.
À une deuxième étape, j’ai ajouté une condition avec If et And, mais cela n’a pas fonctionné :
Private Sub Remplir_Cellules_D()
Dim m As Long
Dim n As Long
m = 1 ' m fait référence à commencer à la ligne 2 (Colonne 2 Matières)
n = 2 ' n fait référence à commencer à la ligne 2 (colonne 1 Nom)
If Sheets("Feuil1").Cells(n, 2) = "" And Sheets("Feuil1").Cells(m, 2) <> "" Then
While Not IsEmpty(Sheets("Feuil1").Cells(m, 2))
Sheets("Feuil1").Cells(65535, 1).End(xlUp)(2).Value = _
Sheets("Feuil1").Cells(n, 1)
m = m + 1 ' passer à la ligne prochaine pour faire le test
n = n + 1
Wend
Else
End If
End Sub
23 août 2017 à 20:11
je pense que ce serait plus clair pour toi si tu avais uniquement un compteur au lieu de deux.