Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2382 connectés 

  FORUM HardWare.fr
  Windows & Software
  Logiciels

  Excel : Fonction SI() imbriquée supérieure à 7 !!

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Excel : Fonction SI() imbriquée supérieure à 7 !!

n°2489615
Profil sup​primé
Posté le 15-08-2006 à 17:32:47  answer
 

EDITER LE dimanche 03 sep. 2006.
 
Pour les fonctions SI() imbriquées, Excel est limité à 7 ou 8.
J'ai déjà posée la question, on m'avait conseillé ici de faire un tableau avec une recherche.
Ca marche.
 
Mais avec une macro, peut-on imbriquer autant de SI() ou IF() que l'on veut ?
Pareil pour les fonctions logique....
 
 
EDITER LE 31 aout 2006 à 19h32 !! autre question !!
****************************************************************************
Un truc simple pratique, j'ai pas trouvé la réponse !!
 
Dans B1 j'ai la formule :
=A1 + 1
Dans B2 la formule :
=A2 + 2
 
Comment incrémenter à chaque fois le chiffre de la formule : +1 ; +2 ensuite +3..etc ??
 
******************************************************************************
 
Salut  
 
Alors je viens de voir que excel est limité dans la cascade de condition SI ! On ne peut mettre que 7 conditions dans une formule !!
=SI(A1=3;"oui";SI(A2=8;"non";SI(...etc)
 
J'ai par exemple :
A1 à A20 des nombreux entiers entre 1 et 20.
Comment associer un prénom par ex. pour chaque nombre ?  
Si A1=2 alors marquer dans B1="jean", sinon si A1=3 marquer dans b1="Pierre",, sinon si A1=4 marquer dans B1="jaques" etc, dans B1 ça donne :
=SI(A1=2;"jean";SI(A1=3;"pierre";SI(...etc))))))
 
ca marche bien avec 7 conditions, mais au-delà il faudra une autre méthode !! Laquelle choisir? Je sais ma méthode, mais je ne connais pas trop les instructions...Et le SI me bloque là.
 
 
 
merci  :hello:  
 
***********************************************************************************
***********************************************************************************
Salut !
 
J'ai de nombreuses recherche et essais, mais j'ai pas trouvé la solution !
 
Alors J'ai dans A1 à J1 des chiffres, disons au harsard : 10,20,30,40,50,60,70,80,90,100.
 
Comment faire pour les recopier automatiquement de A9 à T9 par ex. en sautant à chaque fois une cellule c'est à dire :
A9 = 10
B9 = rien
C9 = 20
D9 = rien
E9 = 30
.....etc
T9 = 100
 
 
merci.


Message édité par Profil supprimé le 03-09-2006 à 14:11:22
mood
Publicité
Posté le 15-08-2006 à 17:32:47  profilanswer
 

n°2489733
Profil sup​primé
Posté le 15-08-2006 à 20:21:42  answer
 

up lol

n°2489755
TAM136
Posté le 15-08-2006 à 20:51:09  profilanswer
 

Salut
Salut,
 
Un up en moins de 3H faut le faire. Comme je suis pas chien et que ça peut aider les autres, j'ai un truc mais c'est pas super simple (je veux dire pas compliqué mais c'est peut-être plus rapide de le faire à la main). Il faudrait donc que tu fournisses plus de renseignements: est-ce que c'est une opération que tu veux répéter, est-ce que c'est toujours les mêmes cellules qui sont concernées,etc...?

n°2489855
Profil sup​primé
Posté le 15-08-2006 à 22:57:01  answer
 

TAM136 a écrit :

Salut
Salut,
 
Un up en moins de 3H faut le faire. Comme je suis pas chien et que ça peut aider les autres, j'ai un truc mais c'est pas super simple (je veux dire pas compliqué mais c'est peut-être plus rapide de le faire à la main). Il faudrait donc que tu fournisses plus de renseignements: est-ce que c'est une opération que tu veux répéter, est-ce que c'est toujours les mêmes cellules qui sont concernées,etc...?


 
 
excuses oui j'ai fais un up après 3h, car le sujet n'était plus dans la "liste 1".
 
bon bref merci de répondre.
 
Enfait on peut pas parler d'opération, c'est juste un recopiage de cellules, mais en sautant des cellules sur la ligne où l'on a recopié.Donc de : A1 à J1 j'ai :
A1 = 10
B1 = 20
C1 = 30
D1 = 40
E1 = 50
etc
J1 = 100
 
JE veux recopier la ligne A1 à J1 sur la ligne A9 à T9 en laissant des espaces (donc 20 cellules).
donc dans A9 je mets : =A1
Dans B9 je mets rien (puisque je saute une cellule).
Dans C9 je mets  : =B1
 
Le problème quand je recopie automatiquement, il me mets bien les espaces, mais ne recopie pas la suite d'avant.
Excel met alors dans E9 la valeur de E1 et non celle de C1 !!!
 
capture :
http://img67.imageshack.us/img67/3893/exqj9.jpg
 
 
 
PS : bien sur ceci est juste un exemple, car j'ai pas que 10 chiffres.
 
 

n°2490002
Prozac
Tout va bien
Posté le 16-08-2006 à 10:18:51  profilanswer
 

En prenant très exactement ton exemple
dans la cellule A9, on met la formule =A1
dans la cellule B9, on met la formule
=IF(A9<>"";"";OFFSET(B9;-8;-(COLUMN(B9))/2+1))
(je connais pas le nom des fonctions offset et column en français)
 
et tu recopies à droite
 
voilà  :sol:


Message édité par Prozac le 16-08-2006 à 10:36:07
n°2490273
Profil sup​primé
Posté le 16-08-2006 à 15:38:10  answer
 

merci prozac, j'au bien rentré cette formule. Mais çà ne marche pas.
 
Il me recopie : E9=E1 etc et non E9=C1.
 
Pourrais-tu expliquer cette formule ??
=IF(A9<>"";"";OFFSET(B9;-8;-(COLUMN(B9))/2+1))

n°2490497
Prozac
Tout va bien
Posté le 16-08-2006 à 19:10:50  profilanswer
 

il faut recopier la formule qui est en B9 à droite, et pas celle en A9 (on n'y touche plus à celle là).
 
OFFSET devient DECALER en français, COLUMN devient COLONNE en français
La première cellule ou cette formule est copiée est B9
 
donc le fonctionnement donne :
si cellule à gauche est vide
alors vide
sinon  
cellule 8 lignes au dessus de la cellule actuelle, à gauche du (numéro de colonne)/2+1
 
(DECALER retourne la valeur contenue dans une cellule qui est située par rapport à la cellule entrée en premier argument, en ajoutant le nombre de ligne indiqué en 2eme argument, donc ici en négatif puisqu'on recherche en haut, et du nombre de colonnes à droite par rapport à la cellule du 1er argument).
 
Voilà voilà


Message édité par Prozac le 16-08-2006 à 19:12:18

---------------
La ligne droite n'est en aucun cas le plus court chemin entre deux points. Sauf, bien sûr, si les deux points sont bien alignés l'un en face de l'autre
n°2491171
Profil sup​primé
Posté le 17-08-2006 à 14:31:18  answer
 

C'est bon çà marche  merci Prozac de ton aide !  
 
Mais d'autres problèmes !!  
 
Alors je viens de voir que excel est limité dans la cascade de condition SI ! On ne peut mettre que 7 conditions dans une formule !!
=SI(A1=3;"oui";SI(A2=8;"non";SI(...etc)
 
J'ai par exemple :
A1 à A20 des nombreux entiers entre 1 et 20.
Comment associer un prénom par ex. pour chaque nombre ?  
Si A1=2 alors marquer dans B1="jean", sinon si A1=3 marquer dans b1="Pierre",, sinon si A1=4 marquer dans B1="jaques" etc, dans B1 ça donne :
=SI(A1=2;"jean";SI(A1=3;"pierre";SI(...etc))))))
 
ca marche bien avec 7 conditions, mais au-delà il faudra une autre méthode !! Laquelle choisir? Je sais ma méthode, mais je ne connais pas trop les instructions...Et le SI me bloque là.

n°2491219
Prozac
Tout va bien
Posté le 17-08-2006 à 15:02:30  profilanswer
 

Tu fais un tableau avec le chiffre et le prénom en correspondance et tu utilises la fonction recherchev, elle est faite pour ça

n°2491313
Profil sup​primé
Posté le 17-08-2006 à 16:29:57  answer
 

Merci je vais voir pour recherchev.
 
Mais la forule avant que tu m'a donné marche !!
 
Mais j'y reviens, car je comprend vraiment pas pourquoi à la fin il y a "/2+1 ".
 
Et oui je débute !

mood
Publicité
Posté le 17-08-2006 à 16:29:57  profilanswer
 

n°2491739
Prozac
Tout va bien
Posté le 18-08-2006 à 09:22:35  profilanswer
 

La formule est pas super propre parce qu'il aurait mieux valu mettre  
-(COLUMN(C9)-1)/2) et non/2+1
 
Ben quand tu regardes où est la valeur que tu veux afficher, elle est à la moitié du chemin. si tu es à la colonne 100 (tu avances de 2 en 2), la valeur que tu cherches sera vers la moitié
 
Une remarque quand même : dans ton exemple, tu veux retourner une cellule vide pour toutes les colonnes pairs.  
 
Quand tu es dans la colonne I (la 10ème), la valeur dans la première ligne est 90, tu veux afficher 50 sur la 9eme ligne. la valeur 50 est dans la 5ème colonne, soit 4 colonnes à gauche de la 10ème.
 
Tu peux coller =-(COLUMN(C9)-1)/2 en C3 et recopier à gauche pour voir comment elle évolue (et =-(COLUMN(C9)/2)/+1 pour comparer
 
Pour les colonnes pairs, la version corrigée retourne un entier, alors qu'on a le même entier -0.5 avec la première formule. Ca marche mais c'est presque un coup de bol que DECALER accepte des décimaux et les arrondissent à l'entier supérieur

n°2493907
Profil sup​primé
Posté le 20-08-2006 à 20:54:23  answer
 

Merci à tous !!
 
J'ai d'autres questions !!
 
J'ai une série de chiffres 0 1 2 3 4 6 7 8 9 2 5 4 8 7 5 4 1 2 5 2 5 4 6 4 etc....
Comment faire avec un copier/coller correspondre chaque chiffre dans une case ? A1 = 0    A2 = 1   A3 = 2 etc... ??  
 

n°2494099
Prozac
Tout va bien
Posté le 21-08-2006 à 09:09:45  profilanswer
 

Copier/collage spécial (menu édition)/transposer : il colle le tableau copié en échangeant abscisse et ordonnées des cases

n°2497025
Profil sup​primé
Posté le 23-08-2006 à 23:21:43  answer
 

Je me suis peut-être mal exprimé !!
 
MAis la série de chiffre est dans une seule case !!
 
C'est pour çà je veux transposer 0 1 2 3 4 6 7 8 9 2 5 4 8 7 5 4 1 2 5 2 5 4 6 4 (qui est en B1) en A1 = 0    A2 = 1 etc...

n°2497073
TAM136
Posté le 24-08-2006 à 06:22:18  profilanswer
 

Salut
La méthode de Prozac fonctionne à condition
1/Qu'il y ait un espace entre les chiffres
2/Que tu ailles dans Données/Convertir/Option Largeur fixe cochée par défaut

n°2497074
TAM136
Posté le 24-08-2006 à 06:25:17  profilanswer
 

Re,
 
S'il n'y a pas d'espace, Ctrl+H
Rechercher: 123456789
Remplacer par: 1 2 3 4 5 etc...

n°2497840
Prozac
Tout va bien
Posté le 24-08-2006 à 19:13:40  profilanswer
 

TAM136 a écrit :

Salut
La méthode de Prozac fonctionne à condition
1/Qu'il y ait un espace entre les chiffres
2/Que tu ailles dans Données/Convertir/Option Largeur fixe cochée par défaut


 
Non, si c'est dans une seule case, je ne pense pas que ça marche. On peut faire une fonction qui trouve le bon chiffre à base de mid (en anglais) et en calculant la position du caractère à copier d'après l'ordonnée de la cellule. Et à condition que dans la série de chiffre, tous ne comportent qu'un seul chiffre.
 
 
Si il y a plusieurs chiffres, c'est encore possible mais beaucoup plus compliqué. Une fonction VBA serait alors plus simple.
Si on supprime les espaces et qu'il n'y a qu'un chiffre, on peut effectivement indexer directement la fonction mid sur l'ordonnée (avec la fonction ROW en anglais)


Message édité par Prozac le 24-08-2006 à 19:15:44

---------------
La ligne droite n'est en aucun cas le plus court chemin entre deux points. Sauf, bien sûr, si les deux points sont bien alignés l'un en face de l'autre
n°2504540
Profil sup​primé
Posté le 31-08-2006 à 19:36:53  answer
 

Un truc simple pratique, j'ai pas trouvé la réponse !!
 
Dans B1 j'ai la formule :
=A1 + 1
Dans B2 la formule :
=A2 + 2
 
Comment incrémenter à chaque fois le chiffre de la formule : +1 ; +2 ensuite +3..etc ??

n°2504625
TAM136
Posté le 31-08-2006 à 20:57:08  profilanswer
 

Bonsoir
 
En utilisant peut-être la colonne C dans laquelle on fait une série:1,2,3...

n°2504640
TAM136
Posté le 31-08-2006 à 21:06:23  profilanswer
 

Tu tapes 1 en C1. Ensuite, tu copies. Tu vas par exempl en C50, tu sélectionnes la zone avec la touche Maj. Après, tu vas dans Edition/Remplissage/Série/Linéaire.

n°2504645
Profil sup​primé
Posté le 31-08-2006 à 21:07:25  answer
 

oui je sais, mais çà serait pas plus facile d'incrémenter à l'aide d'une formule ?? Ca évite de surcharger..c'est pour çà que je pose la question...

n°2505064
TAM136
Posté le 01-09-2006 à 10:28:22  profilanswer
 

Surcharger quoi? Je ne comprends pas.
J'ai une macro. Par contre, elle ne fonctionne pas pour B1. Elle fonctionne parfaitement pour B2,B3.....
Sub Macro2()
For i = 1 To indiques le n° de ligne
For j = 1 To 1
Cells(i + 1, j + 1).Value = Cells(i + 1, j).Value + i
Next j
Next i
End Sub

n°2505185
TAM136
Posté le 01-09-2006 à 12:22:43  profilanswer
 

Sub Macro2()
Range("B1" ) = Range("A1" ) + 1
For i = 1 To 150
For j = 1 To 1
Cells(i + 1, j + 1).Value = Cells(i + 1, j).Value + i
Next j
Next i
End Sub

n°2505216
TAM136
Posté le 01-09-2006 à 12:50:19  profilanswer
 

Rere
 
Sub Macro2()
Range("B1" ) = Range("A1" ) + 1
For i = 1 To 150
For j = 1 To 1
Cells(i + 1, j + 1).Value = Cells(i + 1, j).Value + i + 1
Next j
Next i
End Sub
 
Ça devrait être bon.

n°2505632
Prozac
Tout va bien
Posté le 01-09-2006 à 19:28:28  profilanswer
 

Si le numéro à incrémenter est lié au numéro de ligne, on peut utiliser la formule row(b2) dans la formule pour retourner 2 en b2, et recopier : ça retourne 3 en b3 etc (ça doit etre LIGNE(B2) dans les versions françaises).


---------------
La ligne droite n'est en aucun cas le plus court chemin entre deux points. Sauf, bien sûr, si les deux points sont bien alignés l'un en face de l'autre
n°2506940
Profil sup​primé
Posté le 03-09-2006 à 14:13:20  answer
 

Merci, je suis entraint de voir les bases du visualbasic, ce que vous mettez ici parait relativement simple.
 
 
Pour les fonctions SI() imbriquées, Excel est limité à 7 ou 8.
J'ai déjà posée la question, on m'avait conseillé ici de faire un tableau avec une recherche.
Ca marche.
 
Mais avec une macro, peut-on imbriquer autant de SI() ou IF() que l'on veut ?
Pareil pour les fonctions logique....
Pour moi çà serait plus simple d'imbriquer les fonctions SI() que de faire des tableaux.

n°2507013
Profil sup​primé
Posté le 03-09-2006 à 15:42:16  answer
 


 
 
Pour ceux à qui à pourrait aider !!
 
J ai trouvé une très bonne formule qui le fait !!
    *  La formule stxt():
 
       Cette fonction permet de renvoyer un nombre de caractères suivant une chaîne de caractères précédemment donnée et suivant la place et le nombre de caractères donnés:
 
        * Si le numéro de départ est supérieur à la longueur du texte alors la fonction renvoie la chaine vide ' '
        * Si le numéro de départ est inférieur à la longueur du texte, mais que l'addition de celui-ci et du nombre de caractères dépasse la longueur du texte, STXT renoie tous les caractères jusqu'à la fin du texte.
        * Si le numéro de départ est inférieur à 1, STXT renvoie une erreur.
        * Si le nombre de caractères est négatif, STXT renvoie aussi une erreur.
 
 
 

n°2507148
TAM136
Posté le 03-09-2006 à 18:21:58  profilanswer
 

Ça m'intéresse mais je n'ai pas compris comment tu fais pour extraire séparément chacun des caractères de la chaîne.
Admettons que j'ai 123456789 en A17. Si en A18, je veux 1, en A19,je veux 2....9 en A26. Je tape en A18 =STXT(A17;1;1) ce qui me permet de bien avoir 1 mais ensuite comment faire pour avoi 2 en A19...9 en A26?
 
Merci

n°2507370
Profil sup​primé
Posté le 03-09-2006 à 22:12:23  answer
 

TAM136 a écrit :

Ça m'intéresse mais je n'ai pas compris comment tu fais pour extraire séparément chacun des caractères de la chaîne.
Admettons que j'ai 123456789 en A17. Si en A18, je veux 1, en A19,je veux 2....9 en A26. Je tape en A18 =STXT(A17;1;1) ce qui me permet de bien avoir 1 mais ensuite comment faire pour avoi 2 en A19...9 en A26?
 
Merci


 
 
Voilà c'est exactement le même problème que j'ai eu avec mon incrémentation avec le calcul, et tu m'a dis de créer une colone d'incrémentation avec 1;2;3;4;5;6 etc... oubien faire le truc en visualbasic.
 
Tu crées une colone s'incrémentation qui commence à B18, donc b19 = 2 etc...
Donc en A17 t'a (je change :D ) : ABCDEFGH etc.
En A18 tu veux A tu fais =STXT($A$17;B18;1)
Tu copie tout çà après.
 
B18=1 donc premier caractère soit A; le 1 est le nombre de caractère, si çà aurait été 2 tu aurais AB.
 
 :hello:

n°2509598
Profil sup​primé
Posté le 05-09-2006 à 20:03:07  answer
 

 
Pour les fonctions SI() imbriquées, Excel est limité à 7 ou 8.
J'ai déjà posée la question, on m'avait conseillé ici de faire un tableau avec une recherche.
Ca marche.
 
Mais avec une macro, peut-on imbriquer autant de SI() ou IF() que l'on veut ?
Pareil pour les fonctions logique....
Pour moi çà serait plus simple d'imbriquer les fonctions SI() que de faire des tableaux.

n°2509668
TAM136
Posté le 05-09-2006 à 21:08:33  profilanswer
 

Bonsoir,
 
If Range("B1" ).Value = "CADRE" Then
Range("C1" ).Value = "Lundi"
End If
If Range("B2" ).Value = "ETUDIANT" Then
Range("C2" ).Value = "Mardi"
End If
If Range("B3" ).Value = "LIBERAL" Then
Range("C3" ).Value = "Mercredi"
End If
If Range("B4" ).Value = "CHOMEUR" Then
Range("C4" ).Value = "Jeudi"
End If
If Range("B5" ).Value = "RETRAITE" Then
Range("C5" ).Value = "Vendredi"
End If
If Range("B6" ).Value = "OUVRIER" Then
Range("C6" ).Value = "Samedi"
End If
If Range("B7" ).Value = "ARTISAN" Then
Range("C7" ).Value = "Dimanche"
End If
If Range("B8" ).Value = "FAINEANT" Then
Range("C8" ).Value = "Lit"
End If
If Range("B9" ).Value = "VOLEUR" Then
Range("C9" ).Value = "Prison"
End If
End Sub

n°2509688
TAM136
Posté le 05-09-2006 à 21:23:46  profilanswer
 

Re,  
 
Je pense qu'il y a plus simple avec Select case (peut-être) mais je ne vois pas comment faire.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Logiciels

  Excel : Fonction SI() imbriquée supérieure à 7 !!

 

Sujets relatifs
[excel] Valeur majoritaire, non numérique[Excel] Cellules invisibles
GRAPHIQUE SOUS EXCEL 2003[Excel] nb de valeurs distinctes apres filtrage
excel et ses couleursExcel cellule verouillé
[Excel] Double liste déroulante[Excel] Image sur toutes les feuilles
Excel : Montrer quelles cellules ne sont pas protégéesproblème ouverture fichier word et excel
Plus de sujets relatifs à : Excel : Fonction SI() imbriquée supérieure à 7 !!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR