Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/12/2011, 15h33   #1
Invité de passage
 
Inscription : septembre 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 16
Points : 1
Points : 1
Par défaut Probleme fonction SI

Bonjour,

après avoir cherché partout sur la toile ... je me tourne vers vous car je n'ai trouvé aucune solution a mon problème....

j'ai un classeur XL ... avec une feuille ABAQUE une ACCESSOIRE, ACCORDÉON et JOINT...

je voudrais sur la feuille JOINT

que le résultat du calcul suivant apparaisse dans une cellule ....

Sub jointmontants()
'enleve la protection
ActiveSheet.Unprotect ("test")
'test logique sur nombre d'element
Select Case Range("G6").Value
' ------ ' 1 element
Case 1
n = ((G2 * 4 + (1030 * 4) * 2) / 1000)
' ------ ' 2 elements
Case 2
n = (((G2 * 4 + (1030 * 4) * 2) / 1000) + (((G2 + 112.4) * 4 + (1030 * 4) * 2) / 1000))
' ------ ' 3 elements
Case 3
n = (((G2 * 4 + (1030 * 4) * 2) / 1000) + (((G2 + 112.4) * 4 + (1030 * 4) * 2) / 1000) + (((G2 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)))
' ------ ' 4 elements
Case 4
n = (((G2 * 4 + (1030 * 4) * 2) / 1000) + (((G2 + 112.4) * 4 + (1030 * 4) * 2) / 1000) + (((G2 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)))
' ------ ' 5 elements
Case 5
n = (((G2 * 4 + (1030 * 4) * 2) / 1000) + (((G2 + 112.4) * 4 + (1030 * 4) * 2) / 1000) + (((G2 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)))
' ------ ' 6 elements
Case 6
n = (((G2 * 4 + (1030 * 4) * 2) / 1000) + (((G2 + 112.4) * 4 + (1030 * 4) * 2) / 1000) + (((G2 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)))
' ------ ' 7 elements
Case 7
n = (((G2 * 4 + (1030 * 4) * 2) / 1000) + (((G2 + 112.4) * 4 + (1030 * 4) * 2) / 1000) + (((G2 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)))
' ------ ' 8 elements
Case 8
n = (((G2 * 4 + (1030 * 4) * 2) / 1000) + (((G2 + 112.4) * 4 + (1030 * 4) * 2) / 1000) + (((G2 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)))
' ------ ' 9 elements
Case 9
n = (((G2 * 4 + (1030 * 4) * 2) / 1000) + (((G2 + 112.4) * 4 + (1030 * 4) * 2) / 1000) + (((G2 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)))
' ------ ' 10 elements
Case 10
n = (((G2 * 4 + (1030 * 4) * 2) / 1000) + (((G2 + 112.4) * 4 + (1030 * 4) * 2) / 1000) + (((G2 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)) + (((G2 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4 + 112.4) * 4 + (1030 * 4) * 2)))
' ------ Entre guillemets pour tester les chaînes de caractères
' ------ Pour toutes les autres valeurs, donc par défaut:
Case Else

End Select
'remet la protection
ActiveSheet.protect

End Sub


Je ne sais absolument pas comment faire ....

j'attache mon fichier a ce message si quelqu'un a une solution ce serais super !

Merci !
Fichiers attachés
Type de fichier : xls ABAQUE DYNAMIQUE.xls (115,0 Ko, 3 affichages)
jay_5457 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 16h42   #2
Membre régulier
 
Inscription : novembre 2004
Messages : 130
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 130
Points : 75
Points : 75
Bonjour,
en dessous de end select vous pourriez mettre ça :
Code :
1
2
3
4
5
 
dim vFlResult as worksheet
set vFlResult = sheets("feuil machin")
vFlResult.range(A1).value = N
set vFlResult = Nothing
espérant vous avoir aidé
olaxius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 17h04   #3
Invité de passage
 
Inscription : septembre 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 16
Points : 1
Points : 1
Bonjour Olaxius

Quand je rentre ta formule j'ai un message d'erreur 1004

Dim vFlResult As Worksheet
Set vFlResult = ActiveSheet
vFlResult.Range(U8).Value = N
Set vFlResult = Nothing

je l'ai mise comme cela
jay_5457 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 17h09   #4
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 907
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 907
Points : 7 207
Points : 7 207
Bonjour,

Essais avec formulalocal
Code :
vFlResult.Range(U8).Formulalocal = "=" & N
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 08h14   #5
Invité de passage
 
Inscription : septembre 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 16
Points : 1
Points : 1
je vient d'essayer ce matin ta nouvelle formulation mais ça ne marche toujours pas ...

il me colle toujours une erreur 1004 en me disant que la méthode "range" de l'objet _worksheet a échoué.

j'ai essayé de placer toute la formule dans un bouton mais rien n'y fait ... il ne veux pas me faire ce calcul
jay_5457 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 08h31   #6
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 907
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 907
Points : 7 207
Points : 7 207
il te manque les guillemets autour de l'adresse
Code :
vFlResult.Range("U8").Formulalocal = "=" & N
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 09h16   #7
Invité de passage
 
Inscription : septembre 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 16
Points : 1
Points : 1
Merci !

avec les guillemets ça fonctionne !

c'est super maintenant je m'attaque à la partie suivante !!

un grand merci a toi encore !
jay_5457 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 12h30   #8
Invité de passage
 
Inscription : septembre 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 16
Points : 1
Points : 1
Me revoilà pour une autre petite question toujours sur le même code ...

j'ai le bout de code suivant :

Select Case Range("G6").Value
' ------ ' 1 element
Case 1
M = (((1030 * 4) * G6 * 2) + (((G4 + 212) / 2) * 4 * 2)) / 1000
' ------ ' 2 elements
Case 2


quand je tape la formule "= (((1030 * 4) * G6 * 2) + (((G4 + 212) / 2) * 4 * 2)) / 1000"
directement sur ma feuille j’obtiens le résultat 29.088 qui est juste ...


quand je passe par mon bouton macro .... j'ai 0.848 ... qui est archi faux et je ne trouve pas pourquoi ...
jay_5457 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 13h00   #9
Invité de passage
 
Inscription : septembre 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 16
Points : 1
Points : 1
j'ai l'impression qu'il y à un problème quand il va chercher la valeur des cellules

G2 ; G6 .... en fait il me prend je ne sais quoi mais pas ce qu'il dois ...
jay_5457 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 13h32   #10
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 693
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 693
Points : 1 445
Points : 1 445
Bonjour,

Essaie avec
Code :
1
2
3
4
5
6
7
8
9
10
With Worksheets("JOINT")
    'test logique sur nombre d'element
    Select Case .Range("G6").Value
    Case 1
        M = (((1030 * 4) * .Range("G6") * 2) + (((.Range("G4") + 212) / 2) * 4 * 2)) / 1000
    Case Else
 
    End Select
    .Range("U8").Value = M
End With
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 13h51   #11
Invité de passage
 
Inscription : septembre 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 16
Points : 1
Points : 1
Ça marche je vais remettre mon code la dedans !

je vous tient au courant merci !
jay_5457 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h32.


 
 
 
 
Partenaires

Hébergement Web