Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

soucis avec une formule dans une macro...

8 réponses
Avatar
Mavichavel
Bonsoir tout le monde

Voila, j'utilise l'enregistreur de macros et essaye d'affiner les choses
en mettant la main à la pâte suivant mes "petites" connaissances en macro
et là, je bute sur un problème de formule.
Dans le principe : j'ai une petite base de données que j'alimente
manuellement avec : données grille (via macro associée à un bouton). suite
à la saisie d'une fiche, je souhaite que dans la colonne B, dans la
dernière cellule vide, s'inscrive un N° qui s'incrémente automatiquement
SI les cellules G et H de la ligne active renvoient <>"" (différent de
vide ou rien"
ci joint la macro en question, mais le problème est : quand je teste ma
macro (F8) Sans renseigner la ligne considérée, le n° d'incrément se place
seul, alors que la ligne est vide..... où est l'erreur..

merci d'avance du coup de pouce que vous pourrez m'apporter.



Sub comptage()
' comptage Macro
' Macro enregistrée le 04/09/2006 par MP
With Worksheets("saisies")
nvaleur = .Range(.[b12], .[b65536].End(xlUp)).Count
End With
Range("B12").Select ' début de l'entête de colonne qui se nomme NR
ActiveCell.Offset(rowOffset:=nvaleur).Activate
ActiveSheet.Unprotect ' déprotège la feuille
ActiveCell.FormulaR1C1 =
"=IF(COUNTA(RC[5]:RC[6]<>""""),R[-1]C+1,"fin")"

' La ligne ci-dessus pose problème carelle incrémente même SI cellules
vides
' le reste fonctionne sans problème

Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=False
Range("B12").Select
Application.CutCopyMode = False
protege 'protège la feuille
End Sub

--
MesNews : www.mesnews.net
Forum : news://news.zoo-logique.org/MesNews
Identifiant = zoo & MdP = entrer
Une fausse erreur n'est pas forcément une vérité vraie.
Pierre DAC (1893-1975)

8 réponses

Avatar
JLuc
*Bonjour Mavichavel*,
Dans la ligne :
ActiveCell.FormulaR1C1 = "=IF(COUNTA(RC[5]:RC[6]<>""""),R[-1]C+1,"fin")"
il ne faudrai pas doubler les cotes ? ....,""fin"")" par hasard ?


Bonsoir tout le monde

Voila, j'utilise l'enregistreur de macros et essaye d'affiner les choses en
mettant la main à la pâte suivant mes "petites" connaissances en macro et là,
je bute sur un problème de formule.
Dans le principe : j'ai une petite base de données que j'alimente
manuellement avec : données grille (via macro associée à un bouton). suite à
la saisie d'une fiche, je souhaite que dans la colonne B, dans la dernière
cellule vide, s'inscrive un N° qui s'incrémente automatiquement SI les
cellules G et H de la ligne active renvoient <>"" (différent de vide ou rien"
ci joint la macro en question, mais le problème est : quand je teste ma macro
(F8) Sans renseigner la ligne considérée, le n° d'incrément se place seul,
alors que la ligne est vide..... où est l'erreur..

merci d'avance du coup de pouce que vous pourrez m'apporter.



Sub comptage()
' comptage Macro
' Macro enregistrée le 04/09/2006 par MP
With Worksheets("saisies")
nvaleur = .Range(.[b12], .[b65536].End(xlUp)).Count
End With
Range("B12").Select ' début de l'entête de colonne qui se nomme NR
ActiveCell.Offset(rowOffset:=nvaleur).Activate
ActiveSheet.Unprotect ' déprotège la feuille
ActiveCell.FormulaR1C1 = "=IF(COUNTA(RC[5]:RC[6]<>""""),R[-1]C+1,"fin")"

' La ligne ci-dessus pose problème carelle incrémente même SI cellules vides
' le reste fonctionne sans problème

Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:úlse
Range("B12").Select
Application.CutCopyMode = False
protege 'protège la feuille
End Sub


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
Mavichavel
Aprés avoir mis ses gants de boxe *JLuc* a réalisé l'exploit d'écrire
clairement ce *lundi* ,

*Bonjour Mavichavel*,
Dans la ligne :
ActiveCell.FormulaR1C1 =
"=IF(COUNTA(RC[5]:RC[6]<>""""),R[-1]C+1,"fin")"
il ne faudrai pas doubler les cotes ? ....,""fin"")" par hasard ?



Merci JLuc, mais cela est de ma faute si le double cotage n'est pas
visible, j'ai corrigé manuellement la formule et ai inséré "fin" pour plus
de lisibilité.. la formule est bonne, mais je pense qu'elle doit faire
référence à la ligne supérieure et donc, évidemment, à chaque foi, elle
incrémente de 1 alors qu'en réalité elle devrait laisser vide la cellule
B.je ne trouve pas la solution et je tourne en rond...
:/

--
MesNews : www.mesnews.net
Forum : news://news.zoo-logique.org/MesNews
Identifiant = zoo & MdP = entrer
On ne dit pas "je suis paniquée" mais "je cherche un mec"...


Avatar
JLuc
*Bonjour Mavichavel*,
Je crois que j'ai trouvé ton erreur :
ActiveCell.FormulaR1C1 = "=IF(COUNTA(RC[5]:RC[6])>0,R[-1]C+1,""fin"")"
"=IF(COUNTA(RC[5]:RC[6]<>""""),R[-1]C+1,"fin")"
En tout cas, ça a l'air de marcher





Aprés avoir mis ses gants de boxe *JLuc* a réalisé l'exploit d'écrire
clairement ce *lundi* ,

*Bonjour Mavichavel*,
Dans la ligne :
ActiveCell.FormulaR1C1 =
"=IF(COUNTA(RC[5]:RC[6]<>""""),R[-1]C+1,"fin")"
il ne faudrai pas doubler les cotes ? ....,""fin"")" par hasard ?



Merci JLuc, mais cela est de ma faute si le double cotage n'est pas visible,
j'ai corrigé manuellement la formule et ai inséré "fin" pour plus de
lisibilité.. la formule est bonne, mais je pense qu'elle doit faire référence
à la ligne supérieure et donc, évidemment, à chaque foi, elle incrémente de 1
alors qu'en réalité elle devrait laisser vide la cellule B.je ne trouve pas
la solution et je tourne en rond...
:/


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O



Avatar
Mavichavel
Aprés avoir mis ses gants de boxe *JLuc* a réalisé l'exploit d'écrire
clairement ce *lundi* ,

ça progresse mais ce n'est pas encore bon hélas....car si Fin est écrit,
la base de données ne peut plus s'étendre et si je remplace fin par ""
(rien) même problème. apparement même avec 'rien' (autrement dit, cellule
vide) d'écrit dans la cellule, excel (xl97) considére qu'il y a quelque
chose et de fait me renvoi l'erreur ! "la base ne peut être étendue"

Bon, en tout cas merci de t'être penché sur mon souci...pour l'heure, se
sera dodod car demain boulot...bonne fin de soirée et bonne nuit...demain
il fera jour :D

*Bonjour Mavichavel*,
Je crois que j'ai trouvé ton erreur :
ActiveCell.FormulaR1C1 = "=IF(COUNTA(RC[5]:RC[6])>0,R[-1]C+1,""fin"")"
"=IF(COUNTA(RC[5]:RC[6]<>""""),R[-1]C+1,"fin")"
En tout cas, ça a l'air de marcher





--
MesNews : www.mesnews.net
Forum : news://news.zoo-logique.org/MesNews
Identifiant = zoo & MdP = entrer
:-) un adolescent en manque de rebellion




Avatar
lSteph
Bonsoir,

SI les cellules G et H de la ligne active renvoient <>""
donc on ne numérote que si les deux sont remplies!

Tu peux préalablement poser ceci indépendament de ta macro:

Exemple dans la colonne:
en partant de B13 à recopier vers bas
=SOMMEPROD((G13<>"")*(H13<>"");MAX(B$12:B12)+1)
ou
=SI(ET((G13<>"");(H13<>""));MAX(B$12:B12)+1;"")


Cordialement.

lSteph

(Sinon pour faciliter l'usage des macros sur une feuille que l'on veut
protèger
il est amha bien plus commode d'utiliser userinterfaceonly
(à ouverture et/ou fermeture du classeur), en paramètre de protect
que de s' em...er à déprotèger reprotèger à chaque fois.
La protection demeurant efficace dans un cadre standard d'utilisation et
restant au delà bien illusoire.)


"Mavichavel" a écrit dans le message de news:

Bonsoir tout le monde

Voila, j'utilise l'enregistreur de macros et essaye d'affiner les choses
en mettant la main à la pâte suivant mes "petites" connaissances en macro
et là, je bute sur un problème de formule.
Dans le principe : j'ai une petite base de données que j'alimente
manuellement avec : données grille (via macro associée à un bouton). suite
à la saisie d'une fiche, je souhaite que dans la colonne B, dans la
dernière cellule vide, s'inscrive un N° qui s'incrémente automatiquement
SI les cellules G et H de la ligne active renvoient <>"" (différent de
vide ou rien"
ci joint la macro en question, mais le problème est : quand je teste ma
macro (F8) Sans renseigner la ligne considérée, le n° d'incrément se place
seul, alors que la ligne est vide..... où est l'erreur..

merci d'avance du coup de pouce que vous pourrez m'apporter.



Sub comptage()
' comptage Macro
' Macro enregistrée le 04/09/2006 par MP
With Worksheets("saisies")
nvaleur = .Range(.[b12], .[b65536].End(xlUp)).Count
End With
Range("B12").Select ' début de l'entête de colonne qui se nomme NR
ActiveCell.Offset(rowOffset:=nvaleur).Activate
ActiveSheet.Unprotect ' déprotège la feuille
ActiveCell.FormulaR1C1 = "=IF(COUNTA(RC[5]:RC[6]<>""""),R[-1]C+1,"fin")"

' La ligne ci-dessus pose problème carelle incrémente même SI cellules
vides
' le reste fonctionne sans problème

Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=
_
False, Transpose:úlse
Range("B12").Select
Application.CutCopyMode = False
protege 'protège la feuille
End Sub

--
MesNews : www.mesnews.net
Forum : news://news.zoo-logique.org/MesNews
Identifiant = zoo & MdP = entrer
Une fausse erreur n'est pas forcément une vérité vraie.
Pierre DAC (1893-1975)




Avatar
Mavichavel
Du fond de l'espace, de la station 81.57.228.83 , notre ami *lSteph*
nous fait parvenir en ce *lundi* mémorable, le message suivant :

Bonsoir LSteph
Je pense m'être mal exprimé...en fait la personne chargée de la saisie des
fiches verra l'incrémentation des dites fiches au fur et à mesures dela
saisie,donc une fois la fiche écrite quand on appuie sur le touche entrée,
le n° de fiche s'incrémentera de 1 Si et seulement SI les deux cellules en
G et H (nom et prénom sont renseignées) sinon, nada pas de n° de
fiche...donc, c'est avec une macro que je compte faire fonctionner le
principe.
Mais, je suisouvert à toutes propositions ^^ et j'examinerai la tienne
demain soir sans fauteet te tiendrai au fait des choses.
Merci à toi et au plaisir...


Bonsoir,

SI les cellules G et H de la ligne active renvoient <>""
donc on ne numérote que si les deux sont remplies!

Tu peux préalablement poser ceci indépendament de ta macro:

Exemple dans la colonne:
en partant de B13 à recopier vers bas
=SOMMEPROD((G13<>"")*(H13<>"");MAX(B$12:B12)+1)
ou
=SI(ET((G13<>"");(H13<>""));MAX(B$12:B12)+1;"")


Ok, je planche sur ta soluce dés que possible.


Cordialement.

lSteph

(Sinon pour faciliter l'usage des macros sur une feuille que l'on veut
protèger
il est amha bien plus commode d'utiliser userinterfaceonly
(à ouverture et/ou fermeture du classeur), en paramètre de protect
que de s' em...er à déprotèger reprotèger à chaque fois.
La protection demeurant efficace dans un cadre standard d'utilisation et
restant au delà bien illusoire.)
Je ne connais pas, mais je ne demande qu'à apprendre....


Bonne nuit ...

--
MesNews : www.mesnews.net
Forum : news://news.zoo-logique.org/MesNews
Identifiant = zoo & MdP = entrer
On ne dit pas je tripote, mais j'ai trois amis.


Avatar
lSteph
Re,

Mavichavel" qui s'était fort bien exprimé

fiches verra l'incrémentation des dites fiches au fur et à mesures dela
saisie,donc une fois la fiche écrite quand on appuie sur le touche entrée,
le n° de fiche s'incrémentera de 1 Si et seulement SI les deux cellules en
G et H (nom et prénom sont renseignées) sinon, nada pas de n° de fiche...


Oui tout à fait !

avec ceci B renvoie ""rien ou la valeur incrémentée:

=SI(ET((G13<>"");(H13<>""));MAX(B$12:B12)+1;"")

(tu peux l'étendre aussi bas que tu veux
..donc ...
une macro n'est pas indispensable mais tu peux aussi faire cela en vba!


@+

lSteph

Avatar
Mavichavel
en ce *lundi* *04/09/2006* , notre trés honoré(e) *lSteph* dans un éclair
de génie et aprés mûre reflexion a enfin exprimé sa pensée en ce qui suit
:


Bonsoir LSteph

La solution formule me convient parfaitement, elle roule toute seule et
répond à mes attentes.
Je t'en remercie.
Pour la soluce macro, je plancherai sur le sujet quand j'aurai un peu plus
de temps...

Bonne soirée à toi et au plaisir.
:-Z

Re,

Mavichavel" qui s'était fort bien exprimé

fiches verra l'incrémentation des dites fiches au fur et à mesures
dela saisie,donc une fois la fiche écrite quand on appuie sur le
touche entrée, le n° de fiche s'incrémentera de 1 Si et seulement SI
les deux cellules en G et H (nom et prénom sont renseignées) sinon,
nada pas de n° de fiche...


Oui tout à fait !

avec ceci B renvoie ""rien ou la valeur incrémentée:

=SI(ET((G13<>"");(H13<>""));MAX(B$12:B12)+1;"")

(tu peux l'étendre aussi bas que tu veux
..donc ...
une macro n'est pas indispensable mais tu peux aussi faire cela en vba!


@+

lSteph


--
MesNews : www.mesnews.net
Forum : news://news.zoo-logique.org/MesNews
Identifiant = zoo & MdP = entrer
Quand on dit d'un artiste comique de grand talent qu'il n'a pas de prix,
ce n'est pas une raison pour ne pas le payer sous le fallacieux prétexte
qu'il est impayable.
Pierre DAC (1893-1975)