Remplissage sous trois conditions

Bonjour à tous,

Voilà mon soucis. J'aimerais que la Cellule E6 de mon excel se modifie selon trois conditions:

La première: si C6 ne contient pas de texte et J6 est égal à 0 alors E6 = "ATCH"

La deuxième: si C6 ne contient pas de texte et J6 est différent de 0 alors E6 = "ATVB"

La troisième: si C6="Accepté" alors F6="Lancé"

Voilà le code que j'ai essayé de mettre en place:

For i = 1 To 100

If Cells(5 + i, 3) = "" AND If Cells(5 + i, 10) = 0 Then

Cells(5 + i, 5)="ATCH"

ElseIf Cells(5 + i, 3) = "" AND If Cells(5 + i, 10) <> 0 Then

Cells(5 + i, 5)="ATVB"

ElseIf Cells(5 + i, 3) = "Accepté" Then

Cells(5 + i, 5)="Lancé"

End If

End If

End If

Next

End Sub

Le problème est que toute ma colonne se modifie et que j'ai une boucle infini (obligé d'appuyer sur échap)

Quelqu'un aurait-il une solution?

Bonjour,

Tu peux tester le code suivant :

Sub Test()
Dim i As Long

For i = 1 To 100
  If Cells(5 + i, 3) = "" And Cells(5 + i, 10) = 0 Then
    Cells(5 + i, 5) = "ATCH"
  ElseIf Cells(5 + i, 3) = "" And Cells(5 + i, 10) <> 0 Then
    Cells(5 + i, 5) = "ATVB"
  ElseIf Cells(5 + i, 3) = "Accepté" Then
    Cells(5 + i, 5) = "Lancé"
  End If
Next i
End Sub

Je te remercie je vais essayer

TCHABS a écrit :

Je te remercie je vais essayer

Il ne faut pas hésiter à dire si cela fonctionne ... ou si cela ne fonctionne pas ...

Bonjour James007,

j'ai intégré ton code à mon autre procédure de la manière suivante:

Private Sub Worksheet_Change(ByVal Target As Range)

For i = 1 To 100

If Cells(5 + i, 6) <> "" Then

If MsgBox("Confirmer", vbYesNo) = vbYes Then

Cells(5 + i, 6).EntireRow.Copy Sheets("Facturé").Cells(Rows.Count, 1).End(xlUp)(2)

Cells(5 + i, 6).EntireRow.Delete

Else

Cells(5 + i, 6).Delete

End If

End If

Next

Dim i As Long

For i = 1 To 100

If Cells(5 + i, 3) = "" And Cells(5 + i, 10) = 0 Then

Cells(5 + i, 5) = "ATCH"

ElseIf Cells(5 + i, 3) = "" And Cells(5 + i, 10) <> 0 Then

Cells(5 + i, 5) = "ATVB"

ElseIf Cells(5 + i, 3) = "Accepté" Then

Cells(5 + i, 5) = "Lancé"

End If

Next i

End Sub

Lorsque je modifie une condition qui devrait opérer un remplissage dans ma case E6, j'ai le message d'erreur suivant: "erreur de compilation: Déclaration existante dans la portée en cours"

As-tu la solution?

Je te remercie par avance.

Re,

La macro que je t'ai proposée est une macro qui est concue pour un module standard ... !!!

Il ne s'agit pas d'une macro évènementielle ...

En effet les macros évènementielles ont besoin d'une construction quelque peu différente ...

Reste à savoir dans quel cas de figure tu te trouves ... ???

17test-depenses.xlsm (26.24 Ko)

Pour donner du concret je joins un équivalent de ma page excel avec ma première procédure. C'est dans cette procédure que j'aimerais ajouter le code de remplissage selon les conditions que j'ai évoqué précédemment.

Merci pour votre aide.

Bonjour,

Si on peut procéder dans l'ordre ...

As-tu déjà testé la macro en tant que macro ...?

Si oui, fonctionne-t-elle comme tu le souhaites ...?

Le problème est que je n'arrive pas à faire fonctionner ta macro: je l'insère dans VBA et j'ai le message d'erreur de compilation que je t'ai transmis dans mon message précédent.

Re,

Je t'ai ajouté la macro à ton fichier test ...

25test-depenses.xlsm (28.94 Ko)

Merci pour ton aide. Y-a t il un moyen pour que cette procédure se fasse automatiquement comme mon premier code?

TCHABS a écrit :

Merci pour ton aide. Y-a t il un moyen pour que cette procédure se fasse automatiquement comme mon premier code?

Re,

Comme je te l'ai déjà indiqué... il existe des différences ...entre les deux formes de macros ...

Mais, encore une fois ... avant d'aller plus loin e de sophistiquer les choses ...sur la méthode de déclenchement ...

La macro Test fait-elle ce qu tu attends d'elle ???

Effectivement ton code marche très bien et fait ce que je demande.

Je te remercie déjà pour ça.

TCHABS a écrit :

Effectivement ton code marche très bien et fait ce que je demande.

Je te remercie déjà pour ça.

Voilà une première étape franchie ... !!!

Merci pour tes remerciements ...

Si nous passons maintenant au déclenchement ...

1. Existe-t-il une séquence que tu suis pour renseigner les différentes cellules ?

2. A quel moment faudrait-il que la macro s'éxécute toute seule ?

Ma démarche se fait de la manière suivante:

Lorsque J6 et C6 sont vides je suis en attente chiffrage donc E6 doit afficher ATCH

Lorsque mon chiffrage est fait je renseigne et J6 et C6 reste vide: je suis en en attente validation donc E6 doit afficher ATVB

Et lorsque mon chiffrage est accepté, je passe C6 en accepté (sachant que J6 est remplie): C6 doit donc afficher Lancé

Voilà ma séquence.

Re,

Merci pour l'explication ... qui aurait débuter la discussion ...

Car, le plus attristant ... c'est que tout ce qui a été fait ... est totalement inutile ...

Une toute simple formule si() ... fait très bien le travail ...

17test-depenses.xlsm (29.05 Ko)

Désolé pour le travail occasionné: la solution est plus simple que je pensais et tu as totalement résolu mon problème.

Je te remercie pour tout.

Bonne continuation à toi.

Bonne journée

Merci pour tes remerciements ...

Bon Courage pour la suite ...

Rechercher des sujets similaires à "remplissage trois conditions"