Bonjour,
Tout d'abord merci de prendre en compte que je suis novice en VBA, je vous expose mon petit souci qui reste pour le moment en dehors de ma compréhension
Pour mon travail, je traite des données qui proviennent d'une BDD qui comporte parfois des erreurs (infos manquantes).
J'ai alors besoin de combler des vides dans un tableau lorsque des cellule sont vides dans la 3eme colonne je vérifie s'il y a une donnée dans la 1ere colonne de la même ligne et si c'est le cas je recopie simplement les valeurs de la colonne 1 et colonne 2 en colonne 3 & 4 et je passe à la ligne suivante. Tout fonctionne tant que je me sers d'un Range au format "C2:C100" mais je voudrais pouvoir utiliser le nom de la colonne plutôt qu'un nombre de ligne défini puisque la taille du tableau est variable...
Une petite aide serait la bienvenue . Faut il une boucle autrement??
Macro1 qui fonctionne :
----------------------------------------------------------------------------
Sub Compléter_Cellules_vides()
Dim c As Range
Application.ScreenUpdating = False
For Each c In Range("C2:C31")
If c = "" And c.Offset(, -2) <> "" Then
c = c.Offset(, -2)
c.Offset(, 1) = c.Offset(, -1)
Else
End If
Next
Application.ScreenUpdating = True
End Sub
----------------------------------------------------------------------------
Macro2 qui ne fonctionne pas
Sub Compléter_Cellules_vides2()
Dim c As Range
Application.ScreenUpdating = False
For Each c In Range("Tableau1[[#Headers],[date cloture cor]]")
If c = "" And c.Offset(, -2) <> "" Then
c = c.Offset(, -2)
c.Offset(, 1) = c.Offset(, -1)
Else
End If
Next
Application.ScreenUpdating = True
End Sub
-----------------------------------------------------------------------
Tout d'abord merci de prendre en compte que je suis novice en VBA, je vous expose mon petit souci qui reste pour le moment en dehors de ma compréhension
Pour mon travail, je traite des données qui proviennent d'une BDD qui comporte parfois des erreurs (infos manquantes).
J'ai alors besoin de combler des vides dans un tableau lorsque des cellule sont vides dans la 3eme colonne je vérifie s'il y a une donnée dans la 1ere colonne de la même ligne et si c'est le cas je recopie simplement les valeurs de la colonne 1 et colonne 2 en colonne 3 & 4 et je passe à la ligne suivante. Tout fonctionne tant que je me sers d'un Range au format "C2:C100" mais je voudrais pouvoir utiliser le nom de la colonne plutôt qu'un nombre de ligne défini puisque la taille du tableau est variable...
Une petite aide serait la bienvenue . Faut il une boucle autrement??
Macro1 qui fonctionne :
----------------------------------------------------------------------------
Sub Compléter_Cellules_vides()
Dim c As Range
Application.ScreenUpdating = False
For Each c In Range("C2:C31")
If c = "" And c.Offset(, -2) <> "" Then
c = c.Offset(, -2)
c.Offset(, 1) = c.Offset(, -1)
Else
End If
Next
Application.ScreenUpdating = True
End Sub
----------------------------------------------------------------------------
Macro2 qui ne fonctionne pas
Sub Compléter_Cellules_vides2()
Dim c As Range
Application.ScreenUpdating = False
For Each c In Range("Tableau1[[#Headers],[date cloture cor]]")
If c = "" And c.Offset(, -2) <> "" Then
c = c.Offset(, -2)
c.Offset(, 1) = c.Offset(, -1)
Else
End If
Next
Application.ScreenUpdating = True
End Sub
-----------------------------------------------------------------------
Pièces jointes
Dernière édition: