transfert auto de valeurs avec condition

atc

XLDnaute Junior
bonjour le forum
j'ai un tableau de données et je voudrais pouvoir
faire copier le contenu de certaines cellules qui repondent à ma condition vers d'autres cellules
ex: si A9 = 'A'
B9 = 1 et ainsi de suite.
j'aimerais copier tous les chiffres qui apparaitront sur la colonne B vers une colonne entre T9 ET T30
merci pour votre aide tjrs precieuse
 

Gorfael

XLDnaute Barbatruc
Salut
Ce super site étant momentanement (j'espère) inapte pour la transmission de fichier, il searit préférable de préciser ton besoin.
Ce que je comprends :
Si ((A9 = 'A') et (B9 = 1)) alors
il faut copier toutes les cellules de la colonne B qui contiennent un nombre dans les cellules de la colonne T entre T9 et T30.

Ces 21 valeurs doivent-elles rester dans le même ordre ?
Les valeurs de la colonne B sont-elles classées ?
Le nombre de la cellule B20 doit-il se retrouver dans la cellule T20 ?

A+
 

atc

XLDnaute Junior
bonjour Gorfael bronjour le forum
merci pour ton aide ,pour plus de precisions
et je crois que vous avez compris ce que j'espere
resoudre
en reponse a ton post oui les cellules de la colonne B seront classées et garderont leurs ordres decroissant
et non la cellules B20 ne doit pas etres forcement en T20 puisque le nombre de cellules repondant au critere A = 'A' ne depasse que rarement une disaine les valeurs en B seront donc par ex B1 = 1 ; B4=4 B19=19 j'aimerais avoir automatiquement en T9=1,T10=4 ET T11=19
merci d'avance
 

Monique

Nous a quitté
Repose en paix
Bonjour,

Par formule

Les lettres en A9:A30,
les nombres en B9:B30
En T8 : 'A' ou autre lettre
En T9 :
=SI(NB.SI(A$9:A$30;T$8)<LIGNES(T$9:T9);'';INDEX(B$1:B$30;PETITE.VALEUR(SI(A$9:A$30=T$8;LIGNE(A$9:A$30));LIGNES(T$9:T9))))
à copier puis coller vers le bas

Formule matricielle, à valider par ctrl, maj et entrée
 
A

atc

Guest
bonjour le forum
bonjour monique
J’ai testé votre formule mais apparemment il y'a autre chose à vérifier puisque ça a marche uniquement pour la première cellule T9 qui correspond à un A9 = 'A' et B9 = '1' pour les autres cellules erreur valeur.
Je dois aussi vous préciser qu'il ne doit pas y avoir forcément des valeurs dans toute la plage B9: B30 seules les cellules répondant a une condition sur la valeur de la cellule voisine en A9:A30 ce qui donne des cellule avec des chiffres entre 1 et 21 dans un ordre croissant
j'ai remarque qu'avec votre formule en plus du chiffre 1 en T9 ET le NB de cellules avec erreur
correspond exactement au NB de cellules en B9:B30.

MERCI POUR VOTRE AIDE
 

Monique

Nous a quitté
Repose en paix
Re,

Je viens d'essayer, chez moi ça marche, trié ou non, avec ou sans cellules vides…
sauf... si je ne valide pas en appuyant simultanément sur les 3 touches ctrl, maj et entrée.

Est-ce que tu avais vu ce petit morceau du message :
'Formule matricielle, à valider par ctrl, maj et entrée'
 

atc

XLDnaute Junior
bonjour le forum
re Monique
oui effectivement ça a marché j'avais vu la dernière partie du message mais je n'avais pas
utilisé la bonne combinaison des touches.

merci infiniment pour votre aide

bonne soirée
@+
 

atc

XLDnaute Junior
Bonjour le forum
Re Monique

Voila le pb n'est pas encore totalement résolu
qd j'ai insèré la formule dans mon tableau de destination les cellules de ce dernier étant
Relie avec une fonction RECHERCHEV avec les mêmes cellules ou j'ai insèré la formule matricielle ont affiché une erreur #N/A
Pour plus de précision

1er tableau sur feuil 1 nommée FM
2 eme tableau de destination sur feuil 2 nommée Retard

Plage de cellules :
1er tableau B9:Q70 Feuil FM
Les valeurs 'A' apparaîtront sur C9:C70
Les numéros de 1 à 62 sont affichés sur B9:B70

Tableau destination B9:H32 Feuil2 Retard
(Possibilité d'augmenter en longueur si besoin pour adapter à la formule)
Les cellules C9:H32 sont référencées sur B9:B32
J'ai eu les bons numéros en B9:B32 mais les cellules a cote ont affiche erreur
Ex formule en C9 =SI(ESTVIDE(B12);'';RECHERCHEV($B12;FM!$B$9:$Q$70;4;FAUX))
 

Monique

Nous a quitté
Repose en paix
Bonjour,

Si c'est Recherchev() qui renvoie #N/A
en C12 de la feuille 'Retard' :
=SI($B12='';'';RECHERCHEV($B12;Fm!$B$9:$Q$70;4;FAUX))

Si la cellule B12 contient '', elle n'est pas vide.

Message édité par: monique, à: 22/06/2006 08:39
 

atc

XLDnaute Junior
Bonjour forum
Bonjour Monique

Encore un petit pépin, je viens d'avoir le temps de tester sur le fichier final, j’ai encore des erreurs cette fois je sais d'ou ça vient sauf que je n'y avais pas penser avant en fait j'ai deux tableau traitant les retards l'un pour l'arrivée et l'autre pour le départ ces deux tableaux sont dispose cote à cote pour pouvoir faire un analyse des retards (Arr et Dep correspondant)
Pour le moment j'ai changé l'emplacement de celui des départs ça a résolu le Pb mais je suis toujours preneur d'une éventuelle solution

Merci bcp pour l'aide
 

Monique

Nous a quitté
Repose en paix
Bonjour,

'mais je suis toujours preneur d'une éventuelle solution'
Solution autre que celle de déplacer le tableau des départs ?

Si les 2 tableaux sont côte à côte,
pourquoi ne pas modifier simplement le 3ème argument de la fonction
Pour l'arrivée par exemple :
=SI(B9='';'';RECHERCHEV($B9;Fm!$B$9:$Q$70;4;FAUX))
pour le départ :
=SI(B9='';'';RECHERCHEV($B9;Fm!$B$9:$Q$70; 5 ou 6 ou 7 ou autre;FAUX))

Est-ce que tu peux avoir plusieurs valeurs identiques en B9:B70
pour une même lettre en C9:C70 ?

Si oui, Recherchev() ne renvoie que la 1ère valeur trouvée
Il faudrait quelque chose comme ça :
=SI($B9='';'';INDEX(Fm!E$1:E$70;PETITE.VALEUR(SI(Fm!$C$9:$C$70=$B$8;LIGNE(Fm!$C$9:$C$70));LIGNES(E$9:E9))))
(à valider par ctrl, maj et entrée)

Pour la 2ème valeur (départs ?), modifier seulement cette partie :
INDEX(Fm!E$1:E$70;

Ou bien prendre comme référence le tableau entier et mettre à la fonction Index() le n° de colonne
=SI($B9='';'';INDEX(Fm!B$1:Q$70;PETITE.VALEUR(SI(Fm!$C$9:$C$70=$B$8;LIGNE(Fm!$C$9:$C$70));LIGNES(G$9:G9));4 ou 5 ou 6 etc))
(à valider par ctrl, maj et entrée)
 

Discussions similaires

Réponses
7
Affichages
430
Réponses
9
Affichages
425

Statistiques des forums

Discussions
312 576
Messages
2 089 863
Membres
104 293
dernier inscrit
blondo