Remplir cellules vides d'une colonne en parallèle à une autre
Oscar
-
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J’aurais une question à faire : J’ai des donnés dans plusieurs colonnes, l’une de ces colonnes, dans l'exemple, la B, elle compte avec des données dans plusieurs lignes (pour cet exemple, elle a des données sur les lignes 2 à 5). Comme la colonne A utilise uniquement la ligne 2, je voudrais remplir les restantes lignes (3 à 5, colonne A) avec la même information de la ligne 2. La Macro devrait me permettre de réaliser la même opération à plusieurs reprises avec d’autres A (Nom) et des quantités variables de B (Matières)
NOM MATIÈRES
J’ai essayé plusieurs codes, mais je ne maîtrise pas encore bien la logique de programmation. Selon moi, ceci est la logique à appliquer : Aller jusqu’à la dernière ligne non vide de la colonne A (Nom). Copier la valeur de cette ligne, puis la coller sur les lignes suivantes, et ce, jusqu’au qu’on atteint la dernière ligne de la colonne B (Matières) contenant des données. Pouvez-vous, s’il vous plaît, m’aider avec des codes possibles pour régler ce petit problème?
J’aurais une question à faire : J’ai des donnés dans plusieurs colonnes, l’une de ces colonnes, dans l'exemple, la B, elle compte avec des données dans plusieurs lignes (pour cet exemple, elle a des données sur les lignes 2 à 5). Comme la colonne A utilise uniquement la ligne 2, je voudrais remplir les restantes lignes (3 à 5, colonne A) avec la même information de la ligne 2. La Macro devrait me permettre de réaliser la même opération à plusieurs reprises avec d’autres A (Nom) et des quantités variables de B (Matières)
NOM MATIÈRES
J’ai essayé plusieurs codes, mais je ne maîtrise pas encore bien la logique de programmation. Selon moi, ceci est la logique à appliquer : Aller jusqu’à la dernière ligne non vide de la colonne A (Nom). Copier la valeur de cette ligne, puis la coller sur les lignes suivantes, et ce, jusqu’au qu’on atteint la dernière ligne de la colonne B (Matières) contenant des données. Pouvez-vous, s’il vous plaît, m’aider avec des codes possibles pour régler ce petit problème?
A voir également:
- Remplir cellules vides d'une colonne en parallèle à une autre
- Déplacer une colonne excel - Guide
- Trier une colonne excel - Guide
- Colonne word - Guide
- Comment supprimer une page vide sur word - Guide
- Excel additionner une colonne - Guide
1 réponse
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
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?
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
- 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
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
je pense que ce serait plus clair pour toi si tu avais uniquement un compteur au lieu de deux.