Macro pour compléter cellule vide

7 réponses
Avatar
dolph
Bonjour,

Pourriez-vous m'aider dans la programmation suivante?
Je cherche une manière d'obtenir le tableau ci-joint.
http://www.cijoint.fr/cjlink.php?file=cj201108/cijdkZTFgs.xlsx

A savoir, que le programme écrive "ok" dans les cellules vides quand il y a une quantité dans l'une des cellules suivante sur la ligne. Et me dise "nc" quand il n'y a plus de quantité sur la ligne après une cellule contenant une quantité.

Je vous remercie d'avance pour votre aide.

Bonne journée,
Dolph

7 réponses

Avatar
DanielCo
Bonjour,
Mets cette macro dans le module de ta feuille. Quand tu rentres une
valeur, la ligne se met à jour en conséquence :

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B4", Cells(Rows.Count,
1).End(xlUp).Offset(, 10))) _
Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
Var = Application.CountA(Cells(Target.Row, 2).Resize(, 10))
If Application.CountA(Var) > 0 Then
For i = 2 To 11
If Cells(Target.Row, i) = "" Then
If Var > 0 Then
Cells(Target.Row, i) = "ok"
Else
Cells(Target.Row, i) = "nc"
End If
Else
Var = Var - 1
End If
Next i
End If
Application.EnableEvents = True
End Sub

Cordialement.
Daniel


Bonjour,

Pourriez-vous m'aider dans la programmation suivante?
Je cherche une manière d'obtenir le tableau ci-joint.
http://www.cijoint.fr/cjlink.php?file=cj201108/cijdkZTFgs.xlsx

A savoir, que le programme écrive "ok" dans les cellules vides quand il y a
une quantité dans l'une des cellules suivante sur la ligne. Et me dise "nc"
quand il n'y a plus de quantité sur la ligne après une cellule contenant une
quantité.

Je vous remercie d'avance pour votre aide.

Bonne journée,
Dolph
Avatar
MichD
Bonjour,

Essaie ceci :
(J'ai supposé que la valeur de la cellule H15 dans ton fichier exemple est une erreur de frappe...

'-----------------------------------------
Sub test()
Dim Rg As Range, C As Range

On Error Resume Next
With Worksheets("Feuil1")
Set Rg = .Range("B4:K7").SpecialCells(xlCellTypeBlanks)
End With
Application.EnableEvents = False
For Each C In Rg
If IsNumeric(C.Offset(-1)) Or LCase(C.Offset(-1)) = "ok" Then
C.Value = "ok"
Else
C.Value = "nc"
End If
Next
Application.EnableEvents = True
End Sub
'-----------------------------------------


MichD
--------------------------------------------
"dolph" a écrit dans le message de groupe de discussion :

Bonjour,

Pourriez-vous m'aider dans la programmation suivante?
Je cherche une manière d'obtenir le tableau ci-joint.
http://www.cijoint.fr/cjlink.php?file=cj201108/cijdkZTFgs.xlsx

A savoir, que le programme écrive "ok" dans les cellules vides quand il y a une
quantité dans l'une des cellules suivante sur la ligne. Et me dise "nc" quand il
n'y a plus de quantité sur la ligne après une cellule contenant une quantité.

Je vous remercie d'avance pour votre aide.

Bonne journée,
Dolph
Avatar
DanielCo
... et pour rattraper l'arrièré :

Sub test()
Dim Var, Rg As Range, c As Range
Set Rg = Range([A4], Cells(Rows.Count, 1).End(xlUp)).Offset(, 1)
For Each c In Rg
c.Value = c.Value
Next c
End Sub

Cette macro ne fonctionne qu'après avoir installé la précédente.

Daniel


Bonjour,
Mets cette macro dans le module de ta feuille. Quand tu rentres une valeur,
la ligne se met à jour en conséquence :

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B4", Cells(Rows.Count, 1).End(xlUp).Offset(,
10))) _
Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
Var = Application.CountA(Cells(Target.Row, 2).Resize(, 10))
If Application.CountA(Var) > 0 Then
For i = 2 To 11
If Cells(Target.Row, i) = "" Then
If Var > 0 Then
Cells(Target.Row, i) = "ok"
Else
Cells(Target.Row, i) = "nc"
End If
Else
Var = Var - 1
End If
Next i
End If
Application.EnableEvents = True
End Sub

Cordialement.
Daniel


Bonjour,

Pourriez-vous m'aider dans la programmation suivante?
Je cherche une manière d'obtenir le tableau ci-joint.
http://www.cijoint.fr/cjlink.php?file=cj201108/cijdkZTFgs.xlsx

A savoir, que le programme écrive "ok" dans les cellules vides quand il y a
une quantité dans l'une des cellules suivante sur la ligne. Et me dise "nc"
quand il n'y a plus de quantité sur la ligne après une cellule contenant
une quantité.

Je vous remercie d'avance pour votre aide.

Bonne journée, Dolph
Avatar
dolph
DanielCo a écrit le 11/08/2011 à 14h12 :
Bonjour,
Mets cette macro dans le module de ta feuille. Quand tu rentres une
valeur, la ligne se met à jour en conséquence :

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B4", Cells(Rows.Count,
1).End(xlUp).Offset(, 10))) _
Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
Var = Application.CountA(Cells(Target.Row, 2).Resize(, 10))
If Application.CountA(Var) > 0 Then
For i = 2 To 11
If Cells(Target.Row, i) = "" Then
If Var > 0 Then
Cells(Target.Row, i) = "ok"
Else
Cells(Target.Row, i) = "nc"
End If
Else
Var = Var - 1
End If
Next i
End If
Application.EnableEvents = True
End Sub

Cordialement.
Daniel


Bonjour,

Pourriez-vous m'aider dans la programmation suivante?
Je cherche une manière d'obtenir le tableau ci-joint.
http://www.cijoint.fr/cjlink.php?file=cj201108/cijdkZTFgs.xlsx

A savoir, que le programme écrive "ok" dans les cellules
vides quand il y a
une quantité dans l'une des cellules suivante sur la ligne. Et me dise
"nc"
quand il n'y a plus de quantité sur la ligne après une cellule
contenant une
quantité.

Je vous remercie d'avance pour votre aide.

Bonne journée,
Dolph




Bonjour DanielCo,

Merci pour votre réponse mais en collant la macro dans Visual, le programme me demande le nom de la marco.
En introduisant un nom, il recrée une macro, commencant par Sub nom() End Sub

Comment puis-je faire pour l'utiliser?

Pour précision, le tableau est déjà complété de donnée, il n'y a pas d'introdcution à faire.


Merci beaucoup d'avance,
Dolph
Avatar
DanielCo
Bonjour DanielCo,

Merci pour votre réponse mais en collant la macro dans Visual, le programme
me demande le nom de la marco. En introduisant un nom, il recrée une macro,
commencant par Sub nom() End Sub

Comment puis-je faire pour l'utiliser?

Pour précision, le tableau est déjà complété de donnée, il n'y a pas
d'introdcution à faire.


Merci beaucoup d'avance, Dolph




Regarde ton classeur modifié :

http://www.cijoint.fr/cjlink.php?file=cj201108/cijbsWcij7.xlsm

Daniel
Avatar
dolph
MichD a écrit le 11/08/2011 à 14h18 :
Bonjour,

Essaie ceci :
(J'ai supposé que la valeur de la cellule H15 dans ton fichier exemple
est une erreur de frappe...

'-----------------------------------------
Sub test()
Dim Rg As Range, C As Range

On Error Resume Next
With Worksheets("Feuil1")
Set Rg = .Range("B4:K7").SpecialCells(xlCellTypeBlanks)
End With
Application.EnableEvents = False
For Each C In Rg
If IsNumeric(C.Offset(-1)) Or LCase(C.Offset(-1)) = "ok" Then
C.Value = "ok"
Else
C.Value = "nc"
End If
Next
Application.EnableEvents = True
End Sub
'-----------------------------------------


MichD
--------------------------------------------
"dolph" a écrit dans le message de groupe de discussion :


Bonjour,

Pourriez-vous m'aider dans la programmation suivante?
Je cherche une manière d'obtenir le tableau ci-joint.
http://www.cijoint.fr/cjlink.php?file=cj201108/cijdkZTFgs.xlsx

A savoir, que le programme écrive "ok" dans les cellules vides
quand il y a une
quantité dans l'une des cellules suivante sur la ligne. Et me dise
"nc" quand il
n'y a plus de quantité sur la ligne après une cellule contenant
une quantité.

Je vous remercie d'avance pour votre aide.

Bonne journée,
Dolph


Bonjour MichD,
Merci pour votre réponse.
En fait, la case H15 n'est pas une erreur. Il faut bien que "nc" s'indique après la dernière cellule complétée.

J'apporte ici quelque précisions
Voici exemple :

ok ok ok XXX nc nc
ok ok XXX ok XXX nc
ok ok XXX nc nc nc

donc à la dernière valeur (XXX) sur la ligne, les cellules qui suivent doivent se compléter avec "nc". S'il y a une valeur sur l'une des cellules suivantes sur la ligne, les cellules entre les deux valeurs se complètent avec "ok".
Et tous les cellules vides avant la valeur se complètent avec "ok".

Il s'agit d'un tableau qui provient d'une extraction. Il se ne sera donc pas compléter. La macro doit prendre en compte toutes les infos du tableau.

Je vous remercie pour votre aide.
Dolph
Avatar
dolph
DanielCo a écrit le 11/08/2011 à 15h23 :
Bonjour DanielCo,

Merci pour votre réponse mais en collant la macro dans Visual, le
programme
me demande le nom de la marco. En introduisant un nom, il recrée une
macro,
commencant par Sub nom() End Sub

Comment puis-je faire pour l'utiliser?

Pour précision, le tableau est déjà
complété de donnée, il n'y a pas
d'introdcution à faire.


Merci beaucoup d'avance, Dolph





Regarde ton classeur modifié :

http://www.cijoint.fr/cjlink.php?file=cj201108/cijbsWcij7.xlsm

Daniel


Daniel,
Un grand merci, It's works perfectly!



Merci à vous deux pour votre aide!

Bonne journée !