• Publicité

FORMULE EXCEL

Dans ce forum, vous pouvez poser toutes vos questions concernant l'utilisation de logiciels de bureautique (Microsoft Office, Open Office, etc.)

Modérateurs: Christophe, Sebastien, Stéphane

FORMULE EXCEL

Messagepar BOUR FRED » Lun Juil 19, 2010 2:13 pm

Bonjour,
Premier contact pour essais qui j'espère sera encourageant.
Voilà ma question.
Dans une plage j'ai des cellules vides ("") et toujours une avec un nom à l'intérieur(pas toujours la même). Je voudrai que ce nom apparaisse dans une cellule.
Ce serai super si vous pouviez m'apporter un réponse.
BOUR FRED
No0b
No0b
 
Messages: 7
Inscription: Lun Juil 19, 2010 2:01 pm

Re: FORMULE EXCEL

Messagepar Sebastien » Sam Juil 24, 2010 10:35 pm

Bonjour,

Combien de cellules y a-t-il dans cette plage ?
Avec la formule CONCATENER, on peut y arriver mais elle est limitée en nombre de cellules.

@+
Image
Avatar de l’utilisateur
Sebastien
Administrateur
Administrateur
 
Messages: 4354
Inscription: Lun Fév 14, 2005 7:17 pm
Localisation: LILLE

Re: FORMULE EXCEL

Messagepar BOUR FRED » Mar Juil 27, 2010 2:26 pm

Bonjour, SEB.
Ta réponse ne me convient pas. Je me suis mal expliqué. Voilà, je la reformule mon problème.
J'ai une plage " B6:B25" dans laquelle chaque cellules à un résultat de formule."X"
Donc dans ces 19 Cellules de cette plage, j'ai 18 "X" en réponses et 1 Cellule avec un nom.
Le nom est différent suivant la Cellule. en B6="TOTO" ou "X", en B7="TATA" ou "X", en B8="TITI"ou "X", ....... arrivé en B25, j'ai que "TITI" d'écrit ou des "X".
Je voudrai que ce nom s'écrive dans une Cellule. Je n'arrive pas à trouver. J'en perds le sommeil.
Espérant avoir été clair, merci d'avance.
BOUR FRED
No0b
No0b
 
Messages: 7
Inscription: Lun Juil 19, 2010 2:01 pm

Re: FORMULE EXCEL

Messagepar Sebastien » Lun Aoû 02, 2010 8:19 pm

Salut,



BOUR FRED a écrit:Donc dans ces 19 Cellules de cette plage, j'ai 18 "X" en réponses et 1 Cellule avec un nom.
Le nom est différent suivant la Cellule. en B6="TOTO" ou "X", en B7="TATA" ou "X", en B8="TITI"ou "X", ....... arrivé en B25, j'ai que "TITI" d'écrit ou des "X".
Je voudrai que ce nom s'écrive dans une Cellule.

C'est complétement différent de la demande initiale.

Dans ce cas, le plus simple est encore de passer par une macro.
Connais-tu le fonctionnement des macros sous excel ?

Si oui, voici une macro qui permet de faire ce que tu décris :

Code: Tout sélectionner
Sub recherche_nom()
Dim nom As String
Dim cpt As Integer

Range("B6").Select              'Sélection de la première cellule B6
cpt = 1                         'Création d'un compteur à 1

'début de la boucle
Do While cpt <= 20              'Nous n'allons vérifier que 19 cases (B6:B25)
nom = UCase(ActiveCell.Value)   'NOM prend la valeur de la cellule active, mise en majuscule

If nom = "X" Then               'S'il y a un X dans la cellule alors
ActiveCell.Offset(1, 0).Select  'on va dans la cellule du dessous et
cpt = cpt + 1                   'on ajoute 1 au compteur

Else                            'S'il n'y a pas de X dans la cellule
Range("C1").Select              'on se place en C1 et
ActiveCell = nom                'on colle la valleur de NOM

Exit Sub
End If

'On boucle tant que le compteur n'est pas à 20
Loop

End Sub


le nom est copié en C1. Par contre, ça ne marche que dans le cas ou les cellules contiennent soit des x, soit le nom.

@+
Image
Avatar de l’utilisateur
Sebastien
Administrateur
Administrateur
 
Messages: 4354
Inscription: Lun Fév 14, 2005 7:17 pm
Localisation: LILLE

Re: FORMULE EXCEL

Messagepar DeVline » Jeu Aoû 05, 2010 6:38 pm

Bonjour à tous,

Pour accompagner la macro de Sébastien, une proposition par formule:
Code: Tout sélectionner
{=INDEX(B6:B29;SOMME(SI(B6:B29<>"X";LIGNE(B6:B29)-5;0));)}

(formule matricielle à valider par les trois touches CTRL MAJ ENTER)

La formule est dans le fichier exemple en lien ci-dessous (ainsi qu'une autre pour chercher à la fois sur plusieurs lignes et sur plusieurs colonnes au cas où):

http://www.cijoint.fr/cjlink.php?file=cj201008/cijMhyv2kJ.xls

Bonne soirée à tous,
Avatar de l’utilisateur
DeVline
Ingénieur Informaticien
Ingénieur Informaticien
 
Messages: 98
Inscription: Lun Mar 29, 2010 12:36 pm

Re: FORMULE EXCEL

Messagepar Sebastien » Sam Aoû 07, 2010 11:04 pm

Salut,

DeVline a écrit:Pour accompagner la macro de Sébastien, une proposition par formule:


Merci pour cette solution. Elle sera beaucoup plus simple à utiliser que ma macro.
Avec un fichier exemple en prime ;)

Il va falloir que je me penche un peu plus sur les formules matricielles.

@+
Image
Avatar de l’utilisateur
Sebastien
Administrateur
Administrateur
 
Messages: 4354
Inscription: Lun Fév 14, 2005 7:17 pm
Localisation: LILLE

Re: FORMULE EXCEL

Messagepar DeVline » Dim Aoû 08, 2010 5:48 pm

Bonjour BOUR FRED, Sébastien, le forum.

Suite au MP de BOUR FRED dont je le remercie, je me permets de répondre à sa petite question sur le forum au cas où d'autres seraient intéressés par cette solution.

Je voudrai savoir ce que viens faire le (-5) .


Voici une tentative d'explication autour de cette formule:
{=INDEX(B6:B29;SOMME(SI(B6:B29<>"X";LIGNE(B6:B29)-5;0));)}

La fonction INDEX(matrice; num ligne; num colonne) permet de recupérer la valeur d'une cellule se situant dans une matrice (un tableau à une ou plusieurs colonnes, et une ou plusieurs lignes), à l'intersection d'une ligne et d'une colonne.

Pour un tableau qui ne contient qu'une colonne, l'argument num colonne est facultatif, c'est pourquoi il n'y a rien après le second point virgule, j'aurais pu inscrire 1 au lieu de laisser vide, le résultat eut été le même.

Ici, notre matrice est donc la zone B6:B29, le numéro de ligne est à calculer, et la colonne est la colonne 1 par défaut soit la colonne B.
Pour calculer le numéro de la ligne:
SOMME(SI(B6:B29<>"X";LIGNE(B6:B29)-5;0))

La fonction LIGNE() permet de renvoyer le numéro de ligne d'une cellule. Utilisée dans cette formule en matricielle:
{LIGNE(B6:B29)} renvoie une matrice commençant par 6 et finissant par 29 soit {6;7;8;9;10, ... etc ...; 28;29}
Le test de la formule SI(B6:B29<>"X"...) renvoie une matrice résultat VRAI/FAUX, FAUX si la cellule analysée est égale à X, VRAI si la cellule testée est différente de X, soit dans l'exemple du fichier en lien: {FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;VRAI;FAUX;FAUX;FAUX;etc. ... ;FAUX}
Pour le résultat VRAI qui est en septième position, la fonction LIGNE() renvoie donc le numéro de la ligne, soit le numéro 12.
Or, au sein de la matrice B6:B29, la première ligne de la matrice est la ligne 6, la deuxième ligne de la matrice est la ligne numéro 7, etc. C'est pourquoi dans le calcul du numéro de ligne, je retranche 5 afin que la première ligne de la matrice corresponde à 1 (6-5)
Ainsi, la formule matricielle SI(B6:B29<>"X";LIGNE(B6:B29)-5;0) renvoie la matrice résultat: {0;0;0;0;0;0;7;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0}
soit zéro pour les tests "FAUX", et le numéro de ligne souhaité si "VRAI" donc si la cellule est différente de X.
La Somme de cette matrice faisant 7, la fonction INDEX du début devient donc INDEX(B6:B29;7;), soit la 7ième ligne du tableau en partant de la ligne 6, là où se trouve TITI en cellule B12.

En espérant que mes explications pourront vous aider, je vous souhaite bon courage pour votre travail,

DeVline.
Avatar de l’utilisateur
DeVline
Ingénieur Informaticien
Ingénieur Informaticien
 
Messages: 98
Inscription: Lun Mar 29, 2010 12:36 pm


Retourner vers Forum d'entraide : Bureautique

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

  • Publicité