ZEFRAM28
Messages postés15Date d'inscriptionjeudi 29 septembre 2011StatutMembreDernière intervention 9 janvier 2012
-
6 janv. 2012 à 00:08
ZEFRAM28
Messages postés15Date d'inscriptionjeudi 29 septembre 2011StatutMembreDernière intervention 9 janvier 2012
-
9 janv. 2012 à 12:39
Bonjour à toutes et à tous,
Je travaille sur un fichier dont la formule d'une cellule est renseignée par une macro.
Le fonctionnement est le suivant, sur une sheet j'ai une case à cocher, j'ai affecté a une cellule ( DFPP_VIERGE!I15) l’état de cette case (cochée vrai/ décochée Faux)
Dans une autre cellule (DFPP_VIERGE!G12) , figure un commentaire.
je veux, en fonction de l'état de la case a cocher, placer dans une tierce cellule le contenu de DFPP_VIERGE!G12 en y intégrant en fonction de l'état de la case à cocher l'information texte "décentrage".
La formule de la tierce cellule renseignée hors macro (et qui fonctionne ) est :
Ma question est, quelle syntaxe dois-je utiliser pour faire écrire cette formule par la macro dans la cellule en question?
Pour information, la sheet DFPP_VIERGE sera identifiée dans la macro par la variable : nomnouvelledfpp???
J'ai fait différents tests mais le texte "decentré" me pose problème (à cause des guillemets qui polluent la syntaxe)
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 6 janv. 2012 à 01:12
ou encore (pareil) genre :
With Worksheets("Feuil1")
Worksheets("Feuil2").Range("A1").Value IIf(.Range("A2") True, "decentré " & .Range("A3").Value, .Range("A3").Value)
End With
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 6 janv. 2012 à 00:44
Bonjour,
Montre donc le code de ta macro !
S"il s'agit de faire figurer les guillemets, il faut y écrire """decentré""" et non "decentré", comme dans cet exemple :
MsgBox """decentré""" & vbCrLf & "decentré"
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
ZEFRAM28
Messages postés15Date d'inscriptionjeudi 29 septembre 2011StatutMembreDernière intervention 9 janvier 2012 6 janv. 2012 à 14:51
Oups,
Désolé d'avoir crié victoire trop tôt.
je dois preciser que je suis en Excel 2003 SP2 / VBA V6.3
ci-dessous la partie de code que je reprends :
With Sheets.item(nomfeuille)
ancienne ligne ne prennant pas en compte la case cochée / décochée
.Cells(numligne, 16).Formula = "=" & nomnouvelledfpp & "!G12" 'Solution
Nouvelle ligne prennant en compte la case cochée / décochée
.Cells(numligne, 16).Formula = "=si(" & nomnouvelledfpp & "!I15=vrai;Décentrage " & nomnouvelledfpp & "!G12;" & nomnouvelledfpp & "!G12)" 'Solution
End With
Je n'ai plus d'érreur mais la formule ne s'ecrit pas dans la cells(numligne,16)
Question :
1 - La syntaxe vous semble t'elle correcte?
2 - une idée sur le fait que la formule ne soit pas écrite?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 6 janv. 2012 à 16:43
si ===>> IF
Décentrage " ===>> ""Décentrage """ === >> ( je t'en avais pourtant parlé !)
tous tes ; ===>> ,
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Cette formule tapée à la main dans la cellule (numligne, 16) fonctionne parfaitement.
je rappelle que DFPP_xx est géré par la variable nomnouvelledfpp
(ce nom étant incrémenté au fure et a mesure de l'ajout de feuilles dans le classeur)
Votre proposition ne correspond pas vraiment à ma demande.
il faut tester le critère .Cells(numligne, 16).Formula = "=si(" & nomnouvelledfpp & "!I15=vrai;.....
Deux possibilités :
1 - soit la condition n'est pas validée (Vrai = faux)
alors .Cells(numligne, 16) prends la valeur de DFPP_xx!G12".
2 - soit soit la condition est validée (Vrai = vrai)
Alors idem mais on fait précéder le resultat par le texte décentrage
Je n'arrives pas à faire ecrire cette fonction :
=SI(DFPP_xx!I15=VRAI;"decentré " & DFPP_xx!G12;DFPP_xx!G12)
dans la cellule en question par la macro VBA
j'en suis ici pour le moment mais cette ligne ne semble pas fonctionner (extrait de la macro):
With Sheets.item(nomfeuille)
.Cells(numligne, 16).Formula = "=si(" & nomnouvelledfpp & "!I15=vrai;Décentrage " & nomnouvelledfpp & "!G12;" & nomnouvelledfpp & "!G12)" 'Solution
End With
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 6 janv. 2012 à 17:22
Relis le message de Renfield, ainsi que mon dernier message, auquel j'ajoute :
vrai ===>> TRUE
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 6 janv. 2012 à 17:25
Puis va constater comment cela est finalement écrit ! (en français) !
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
If num_dfpp = 0 Then
MsgBox "Vous ne pouvez plus créer de DFPP à partir de cette " & _
"fiche de vie." & Chr(10) & "Veuillez aller à la plus récente" & _
"des fiches de vie."
ActiveWorkbook.DisplayDrawingObjects = xlAll
Application.StatusBar = "Prêt"
Exit Sub
End If
numligne = ActiveCell.Row
If numligne < 36 Or numligne > 136 And ActiveSheet.Range("A1").Value <> "Fiche de Risques Emboutissage" Then 'UsedRange.Cells(1, 1)
MsgBox "Veuillez utiliser ce menu uniquement dans la zone jaune d'une fiche de vie"
ActiveWorkbook.DisplayDrawingObjects = xlAll
Application.StatusBar = "Prêt"
Exit Sub
End If
Dim nomfeuille As String
nomfeuille = ActiveSheet.Name
Dim test As Boolean
test = Selection.EntireRow.Hidden
'test pour savoir quel est la derniere ligne cachée de la ligne 12 à 29
For t = 14 To 31
test = ActiveSheet.UsedRange.Cells(t, 1).EntireRow.Hidden
If test = True Then
lignelimite = t - 1
Exit For
End If
lignelimite = t
Next
numligne = ActiveCell.Row
If ActiveSheet.UsedRange.Cells(numligne, 2).Value = "" Then
Else
MsgBox "une DFPP a déja été créée à cette ligne" & Chr(10) & _
" veuillez selectionner une autre ligne"
ActiveWorkbook.DisplayDrawingObjects = xlAll
Application.StatusBar = "Prêt"
Exit Sub
End If
var = ActiveSheet.UsedRange.Cells(numligne, 4).Value
If var = "" Then
MsgBox "Veuillez choisir un carreau compris entre A1 et U" & lignelimite
ActiveWorkbook.DisplayDrawingObjects = xlAll
Application.StatusBar = "Prêt"
Exit Sub
End If
'test pour savoir quel est la derniere ligne cachée de la ligne 36 à 136
For t = 36 To 136
test = ActiveSheet.UsedRange.Cells(t, 1).EntireRow.Hidden
If test = True Then
aficheligne = t
Exit For
End If
If t 136 And numligne 136 Then
MsgBox "Vous ne pourrez plus ajouter de nouvelle DFPP dans cette Fiche de vie" _
& Chr(10) & "Nous vous conseillons de créer une nouvelle Fiche de vie" _
& Chr(10) & "(Bouton en haut de cette page)"
End If
Next
For i = 1 To 21
lettre = Chr(i + 64)
For j = 1 To lignelimite
var0 = lettre & j
If var0 = var Then
CADRANT = numero_cadrant(i, j)
With Sheets(nomfeuille).UsedRange
.Cells(numligne, 3).Value = num_dfpp
.Cells(numligne, 26).Value = "Cré"
.Cells(numligne, 29).Value = 1
.Cells(aficheligne, 1).EntireRow.Hidden = False
.Cells(5, 6).Value = Date
End With
' If .Cells(7, 31).Value < 2 Then "Suppression katty : pavé permettant de choisir piece dans dffp selon liste à partir de fiche de risque"
Sheets(nomnouvelledfpp).Cells(7, 2).Formula = "=" & NomFDR & "!E7" 'reference
Sheets(nomnouvelledfpp).Cells(7, 5).Formula = "=" & NomFDR & "!H7" 'designation
Sheets(nomnouvelledfpp).Cells(8, 2).Formula = "=" & NomFDR & "!O7" 'MATIERE
Sheets(nomnouvelledfpp).Cells(8, 5).Formula = "=" & NomFDR & "!Q7" 'PROTECTION
Sheets(nomnouvelledfpp).Cells(8, 7).Formula = "=" & NomFDR & "!S7" 'EPAISSEUR
Sheets(nomnouvelledfpp).Cells(7, 9).Formula = "=" & NomFDR & "!V7" 'IDENTIFIANT
Sheets(nomnouvelledfpp).Cells(7, 12).Formula = "=" & NomFDR & "!Y7" 'GFE
Sheets(nomnouvelledfpp).Cells(8, 9).Formula = "=" & NomFDR & "!AA7" 'NO EMBALAGE
'"Suppression katty :pavé permettant de choisir piece dans dffp selon liste à partir de fiche de risque"
'Sheets(nomnouvelledfpp).Cells(2, 11).Value = num_dfpp 'NO DFPP
' Else
' Sheets(nomnouvelledfpp).Cells(7, 2).Select
' Selection.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
' xlBetween, Formula1:="=ListeRef"
' End If
Next
MsgBox "Veuillez choisir un carreau compris entre 11 et U" & lignelimite
ActiveWorkbook.DisplayDrawingObjects = xlAll
Application.StatusBar = "Prêt"
ZEFRAM28
Messages postés15Date d'inscriptionjeudi 29 septembre 2011StatutMembreDernière intervention 9 janvier 2012 6 janv. 2012 à 17:33
@ Ucfoutu :
en répons a tes deux precedents posts :
Relis le message de Renfield, ainsi que mon dernier message, auquel j'ajoute :
vrai ===>> TRUE
Puis va constater comment cela est finalement écrit ! (en français) !
meme réponse.
entre temps j'ai posté la sub concernée afin de vous permettre d'avoir une vision plus globale.
j'ai la pretention de croire que seule le bout que je vous ai fourni doit etre repris mais bon, je ne suis vraiment pas un specialiste, tout juste un bidouilleur qui essaie de s'en sortir.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 6 janv. 2012 à 17:41
1) Veux-tu_ bien corriger comme nous te l'avons demandé ?
2) ce ne sera pas l'ensemble d'un code (de surcroît non indenté et non mis entre balises, que nous allons analyser). Nous ne traitons ici que la manière d'utiliser Formula
3) si tout ceci te semble curieux, c'est que tu as besoin d'ouvrir ton aide VBA sur le mot Formula (nettement préférable en utilisation) et sur le mot FormulaLocal (et comprendre les différences)
4) ce qui m'inquiète un peu, par contre, est que tu as dit plus haut que "la formule ne s'écrivait pas" (ne pas s'écrire est différent de "s'écrire de manière non attendue"!
J'espère que tu ne cherches pas à écrire dans une cellule protégée (mais ce serait là un tout autre problème, n'ayant rien à voir avec celui de la syntaxe pour Formula).
Bonne chance
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 6 janv. 2012 à 17:52
+1
Surtout qu'en plus, la formule avec Formula sur la feuille sera "transposée" dans la langue locale de toutes manières
Petite preuve/test à 5 sous
Sheets("Feuil1").Range("A1").Formula = "=IF(A1=TRUE,""c'est vrai"",""c'est pas vrai"")"
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient