OVH Cloud OVH Cloud

Pas de reponse ?

7 réponses
Avatar
Gérard
Bonsoir,

n'ayant pas eu de réponse je me permet d'insister
Si ce n'est pas possible par macro merci de me le dire
ou bien ne suis je pas clair ?


Une zone de 13 colonnes (client + 12 mois) sur X lignes ( X clients)
Un client effectue un premier paiement en Mai (soit Fx) et j'aimerais
que les cellules précédentes (Bx à Ex..qui sont vides) se remplissent de
zéros lorsque j'ai saisi la cellule Fx.

Par ailleurs si au lieu d'effectuer un paiement le client retourne sa
commande , disons en Mai aussi , je me positionne sur Fx , je clique un
bouton perso dans la barre d'outils et ainsi , dans la cellule Fx
s'inscrit un R et les cellulles alentours (Bx à Ex ET Gx à Mx) se
remplissent de zéros. C'est faisable ?

Merci par avance

--
Gérard

7 réponses

Avatar
Philippe.R
Bonsoir Gérard,
En complément de la réponse de Clément, saches que le problème que tu poses, non dénué d'intérêt, n'est
pas forcément simple à résoudre, même pour nos immenses talents ! ;o))

Pour ma part, j'en suis là :

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If activecell.Column > 2 And activecell.Row > 1 And activecell.Value <> "" _
And activecell.Offset(0, -1).Value = "" Then
c = activecell.Row
For i = activecell.Offset(0, -1).Column To 2 Step -1
Cells(c, i).Value = 0
Next i
Else: Exit Sub
End If
End Sub

c'est très imparfait, puisque cela nécessite d'avoir décoché "déplacer la sélection" dans les options et
que cela écrase les précédentes entrées si il y a une cellule vide entre la saisie et la précédente.

Si cela peut te servir de base, tu m'en verras heureux.
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
"Gérard" a écrit dans le message de
news:
Bonsoir,

n'ayant pas eu de réponse je me permet d'insister
Si ce n'est pas possible par macro merci de me le dire
ou bien ne suis je pas clair ?


Une zone de 13 colonnes (client + 12 mois) sur X lignes ( X clients)
Un client effectue un premier paiement en Mai (soit Fx) et j'aimerais
que les cellules précédentes (Bx à Ex..qui sont vides) se remplissent de
zéros lorsque j'ai saisi la cellule Fx.

Par ailleurs si au lieu d'effectuer un paiement le client retourne sa
commande , disons en Mai aussi , je me positionne sur Fx , je clique un
bouton perso dans la barre d'outils et ainsi , dans la cellule Fx
s'inscrit un R et les cellulles alentours (Bx à Ex ET Gx à Mx) se
remplissent de zéros. C'est faisable ?

Merci par avance

--
Gérard






Avatar
Gérard
Tu payes comment après ?

ICI CE SONT BÉNÉVOLES, QUI PAIENT LEUR TEMPS DE CONNEXION, ET QUI
RÉPONDENT CE QU'ILS VEULENT, À QUI ILS LE VEULENT, QUAND ILS LE
PEUVENT OU QUAND ILS LE VEULENT.CES BÉNÉVOLES DOIVENT REMPLIR LEURS
OBLIGATIONS DE TRAVAIL AVANT DE RÉPONDRE AUX HARCELEURS.



BAISSE LE VOLUME
TU N'ES PAS OBLIGE D'ABOYER !!!!!!!!

Ma remarque ne se voulait absolument pas désagréable
C'était pour le cas ou elle n'aurait pas été lue.
J'ai dû mal m'exprimer

J'ai déjà eu l'occasion de poser des questions auxquelles j'ai eu des
réponses par AV , Michdenis , ChrisV , PierreVG ou d'autres personnes
compétentes. Et , bien entendu , je respecte et apprécie le temps qu'ils
m'ont consacré. Il m'est arrivé également d'apporter , dans ce forum ou
dans d'autres , ma contribution.

D'autre part cette question était reformulée c'est pour cela que je l'ai
repostée.

Si elle t'a heurté il te suffisait de l'ignorer.

Respectueusement (ça , ça s'adresse au Most Valuable Professional)
et cordialement.


--
Gérard

Avatar
Gérard
Bonsoir Philippe,

En fait , je cherche aussi dans les offset
mais je rame.... ;o)
Je vais d'abord essayer la proposition de Daniel.

Merci
Cordialement.

--
Gérard


"Philippe.R" a écrit dans le message news:

Bonsoir Gérard,
En complément de la réponse de Clément, saches que le problème que tu
poses, non dénué d'intérêt, n'est

pas forcément simple à résoudre, même pour nos immenses talents ! ;o))

Pour ma part, j'en suis là :

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If activecell.Column > 2 And activecell.Row > 1 And activecell.Value <>
"" _

And activecell.Offset(0, -1).Value = "" Then
c = activecell.Row
For i = activecell.Offset(0, -1).Column To 2 Step -1
Cells(c, i).Value = 0
Next i
Else: Exit Sub
End If
End Sub

c'est très imparfait, puisque cela nécessite d'avoir décoché "déplacer
la sélection" dans les options et

que cela écrase les précédentes entrées si il y a une cellule vide
entre la saisie et la précédente.


Si cela peut te servir de base, tu m'en verras heureux.
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
"Gérard" a écrit dans le message de
news:
Bonsoir,

n'ayant pas eu de réponse je me permet d'insister
Si ce n'est pas possible par macro merci de me le dire
ou bien ne suis je pas clair ?


Une zone de 13 colonnes (client + 12 mois) sur X lignes ( X clients)
Un client effectue un premier paiement en Mai (soit Fx) et
j'aimerais


que les cellules précédentes (Bx à Ex..qui sont vides) se remplissent
de


zéros lorsque j'ai saisi la cellule Fx.

Par ailleurs si au lieu d'effectuer un paiement le client retourne sa
commande , disons en Mai aussi , je me positionne sur Fx , je clique
un


bouton perso dans la barre d'outils et ainsi , dans la cellule Fx
s'inscrit un R et les cellulles alentours (Bx à Ex ET Gx à Mx) se
remplissent de zéros. C'est faisable ?

Merci par avance

--
Gérard










Avatar
Gérard
Bonsoir Daniel,

OK , je vais tester ta proposition
Merci beaucoup

Cordialement

--
Gérard


"Daniel.M" a écrit dans le message news:

Salut Gérard,

Nomme tes 12 colonnes par X lignes, la plage Saisie (Menu
Insère/Nom/Définir)

Pour ton 1er problème, la procédure événementielle suivante (dans le
code de

la feuille)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim LaLigne As Long, LaColonne As Integer, DebutColonne As Integer
Dim Plg As Range

If Not Intersect(Target(1, 1), Range("Saisie")) Is Nothing Then
LaLigne = Target(1, 1).Row
LaColonne = Target(1, 1).Column
DebutColonne = Range("Saisie").Column
If LaColonne > DebutColonne Then
Set Plg = Range(Cells(LaLigne, DebutColonne), Cells(LaLigne,
LaColonne - 1))
Application.EnableEvents = False
If Plg.Columns.Count = 1 Then
If Plg.Value = "" Then Plg.Value = 0
Else
On Error Resume Next
Set Plg = Plg.SpecialCells(xlCellTypeBlanks)
On Error GoTo 0

If Not Plg Is Nothing Then
Plg.Value = 0
End If
End If
Application.EnableEvents = True
End If
End If
Set Plg = Nothing
End Sub


Pour ton 2ième problème, la procédure suivante (dans un module
standard):


Sub RetourCmd()
Dim Plg As Range

Set Plg = Intersect(ActiveCell.EntireRow, Range("Saisie"))

If Not Plg Is Nothing Then
Application.EnableEvents = False
Plg.Value = 0
ActiveCell.Value = "R"
Application.EnableEvents = True
End If
Set Plg = Nothing
End Sub


Salutations,

Daniel M.

"Gérard" wrote in message
news:
Bonsoir,

n'ayant pas eu de réponse je me permet d'insister
Si ce n'est pas possible par macro merci de me le dire
ou bien ne suis je pas clair ?


Une zone de 13 colonnes (client + 12 mois) sur X lignes ( X clients)
Un client effectue un premier paiement en Mai (soit Fx) et
j'aimerais


que les cellules précédentes (Bx à Ex..qui sont vides) se remplissent
de


zéros lorsque j'ai saisi la cellule Fx.

Par ailleurs si au lieu d'effectuer un paiement le client retourne sa
commande , disons en Mai aussi , je me positionne sur Fx , je clique
un


bouton perso dans la barre d'outils et ainsi , dans la cellule Fx
s'inscrit un R et les cellulles alentours (Bx à Ex ET Gx à Mx) se
remplissent de zéros. C'est faisable ?

Merci par avance

--
Gérard









Avatar
Gérard
C'était pour le cas ou elle n'aurait pas été lue.


J'vas croire ça, moi; 3 fois en 2 jours.


Bah , tu as décidé d'être désagréable , soit.

3 fois parce que ...
la première fois je n'ai pas été compris
la deuxième , j'ai reformulé la question mais , celle ci étant en réponse
dans un fil , je ne suis pas persuadé que les gens lisent les fils
entièrement si la question d'origine ne les a pas interessé.
D'ou la troisième.
Je ne me justifierai plus.

Ta virulence était inadaptée et malvenue.

Sur ce , bonne nuit.

Gérard


Avatar
Gérard
En fait je viens de me rendre compte que la deuxième fois n'était pas
dans le fil
enfin bref..

--
Gérard


"Gérard" a écrit dans le message news:

C'était pour le cas ou elle n'aurait pas été lue.


J'vas croire ça, moi; 3 fois en 2 jours.


Bah , tu as décidé d'être désagréable , soit.

3 fois parce que ...
la première fois je n'ai pas été compris
la deuxième , j'ai reformulé la question mais , celle ci étant en
réponse

dans un fil , je ne suis pas persuadé que les gens lisent les fils
entièrement si la question d'origine ne les a pas interessé.
D'ou la troisième.
Je ne me justifierai plus.

Ta virulence était inadaptée et malvenue.

Sur ce , bonne nuit.

Gérard








Avatar
Gérard
Bonjour Daniel,

ça y est, ça marche !

Comme tu peux le voir ci-aprés , j'ai modifié le code avec une boucle for
next sinon ça remplissait toutes les cellules (même les "non-vides") de
zéros.
C 'est lent et pas trés "élégant" comme code mais ça fonctionne.
Merci beaucoup.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim LaLigne As Long, LaColonne As Integer, DebutColonne As Integer
Dim Plg As Range
Dim CellVide As Range
Dim Cellules As Integer, Nombre As Integer

If Not Intersect(Target(1, 1), Range("Saisie")) Is Nothing Then
LaLigne = Target(1, 1).Row
LaColonne = Target(1, 1).Column
DebutColonne = Range("Saisie").Column
If LaColonne > DebutColonne Then
Set Plg = Range(Cells(LaLigne, DebutColonne), Cells(LaLigne,
LaColonne - 1))
Application.EnableEvents = False
If Plg.Columns.Count = 1 Then
If Plg.Value = "" Then Plg.Value = 0
Else

Cellules = Plg.Columns.Count
For Nombre = 1 To Cellules
Set CellVide = Cells(LaLigne, LaColonne - Nombre)
If CellVide = "" Then CellVide = 0
Next

End If
Application.EnableEvents = True
End If
End If
Set Plg = Nothing
End Sub


"Daniel.M" a écrit dans le message de news:

Salut Gérard,

Nomme tes 12 colonnes par X lignes, la plage Saisie (Menu
Insère/Nom/Définir)

Pour ton 1er problème, la procédure événementielle suivante (dans le code
de

la feuille)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim LaLigne As Long, LaColonne As Integer, DebutColonne As Integer
Dim Plg As Range

If Not Intersect(Target(1, 1), Range("Saisie")) Is Nothing Then
LaLigne = Target(1, 1).Row
LaColonne = Target(1, 1).Column
DebutColonne = Range("Saisie").Column
If LaColonne > DebutColonne Then
Set Plg = Range(Cells(LaLigne, DebutColonne), Cells(LaLigne,
LaColonne - 1))
Application.EnableEvents = False
If Plg.Columns.Count = 1 Then
If Plg.Value = "" Then Plg.Value = 0
Else
On Error Resume Next
Set Plg = Plg.SpecialCells(xlCellTypeBlanks)
On Error GoTo 0

If Not Plg Is Nothing Then
Plg.Value = 0
End If
End If
Application.EnableEvents = True
End If
End If
Set Plg = Nothing
End Sub


Pour ton 2ième problème, la procédure suivante (dans un module standard):

Sub RetourCmd()
Dim Plg As Range

Set Plg = Intersect(ActiveCell.EntireRow, Range("Saisie"))

If Not Plg Is Nothing Then
Application.EnableEvents = False
Plg.Value = 0
ActiveCell.Value = "R"
Application.EnableEvents = True
End If
Set Plg = Nothing
End Sub


Salutations,

Daniel M.