IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Sommeprod - Trouver coordonnées [XL-2007]


Sujet :

Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2015
    Messages : 60
    Points : 34
    Points
    34
    Par défaut Sommeprod - Trouver coordonnées
    Salut,

    je souhaiterais connaître la dernière ligne (qui n'est pas définie) d'un tableau afin de la rentrer dans mes coordonnées de la somme prod, soit remplacer le C89 par C(x) avec x étant la dernière ligne de mon tableau.

    Voici la fonction que j'ai :

    =SOMMEPROD(($C$7:$C$89="Fourniture")*($D$7:$D$89=300)*($E$7:$E$89)*($F$7:$F$89))

    Et du coup je voulais savoir si je pouvais remplacer le C89 par un si.dernièreligne ou un truc du genre...

    Je sais pas si c'est faisable mais bon je tente quand même !

    Merci messieurs dames !

  2. #2
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Bonjour à toutes et tous
    Bonjour Elie G

    Si j'ai bien compris, et un peu tiré par les cheveux : pour remplacer 89. Avec 2003 ça marche.

    Eric

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2015
    Messages : 60
    Points : 34
    Points
    34
    Par défaut
    Bonjour Eric,

    Merci pour le retour !

    La macro ressemble à ça maintenant (j'ai remplacé les 89 par la formule en question, et j'ai remplacé les lettres en fonction, mais ça ne fonctionne pas. La macro est comme cela du coup :

    =SOMMEPROD(($C$7:$C$(65536-NB.VIDE(C:C))="Fourniture")*($D$7:$D$(65536-NB.VIDE(D))=300)*($E$7:$E$(65536-NB.VIDE(E:E)))*($F$7:$F$(65536-NB.VIDE(F:F)))

    Est-ce que c'était ce que vous aviez en tête ?

    Merci encore !

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Sans savoir à quoi ressemble ta colonne C (est-ce qu'elle contient des vides ? Est-ce qu'elle commence à la ligne 1 ? Quel type de données elle contient ?), c'est difficile à dire.

    Si c'est possible, ça pourra se faire avec une combinaison d'une fonction NB ou NBVAL ou NB.SI (pour connaitre le nombre de ligne) et une fonction INDIRECT ou DECALER (pour recréer la référence en utilisant cette valeur).

    Au pire, il te reste de créer une fonction personnalisée en VBA qui recherche la dernière cellule utilisée d'une colonne donnée et renvoie sa référence sur la base d'un End(xlUp).
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Re

    Outre les remarques de Menhir, on peut améliorer cette formule, si 2007 a plus de 65536 lignes. Dans ce cas écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =(65000-NB.VIDE(C7:C65000))
    en admettant qu'il n'y ai pas de cellule vide entre C7 et C89(dans l'exemple).

    Eric

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2015
    Messages : 60
    Points : 34
    Points
    34
    Par défaut
    Bonjour Menhir,

    En fait la colonne C est remplie grâce à une extraction faite via VBA d'un autre document.
    Du coup, la colonne commence en C7 (début du tableau) mais je ne connais pas la dernière ligne car cela dépend du nombre d'éléments lors de l'extraction. En tout cas, il n'y a aucune cellule vide entre C7 et la fin du tableau et les données sont du texte.
    Idéalement, j'aimerais éviter d'utiliser une macro VBA car ça simplifierait la tâche pour les futurs utilisateurs (j'essaie de faire le plus simple possible!).

    Eric, j'ai suivi votre conseil, et la formule ressemble à ça mais excel n'en veut pas!

    =SOMMEPROD(65000-NB.VIDE($C$7:$C$65000="Fourniture"))*(65000-NB.VIDE($D$7:$D$65000=300))*(65000-NB.VIDE($E$7:$E$65000))*(65000-NB.VIDE($F$7:$F$65000))

    Merci pour votre aide.

  7. #7
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    En supposant que tu as moins de 2000 lignes (sinon, adapte la formule), la formule
    devrait te donner le numéro de la dernière ligne utilisée (vérifie-le)

    Et la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DECALER(C7;0;0;NBVAL(C7:C2000))
    Devrait désigner ta zone.

    Il devrait être possible de faire la même chose avec la fonction INDIRECT
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2015
    Messages : 60
    Points : 34
    Points
    34
    Par défaut
    Ca fonctionne, merci bien

  9. #9
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 421
    Points : 16 267
    Points
    16 267
    Par défaut
    Bonjour

    Une autre solution consiste à mettre ton tableau source sous forme de tableau (au sens 2007-2013) et d'utiliser les formules tableaux

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((Tableau1[Colonne1]="Fourniture")*(Tableau1[Colonne2]=300)*(Tableau1[Colonne3])*(Tableau1[Colonne4]))
    en adaptant le nom du tableau et des en-tête de colonnes.

    La formule suivra naturellement l'évolution de taille du tableau.

    Un peu de lecture sur les tableaux http://www.excel-formations.fr/Trucs...Tableaux01.php
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Trouver coordonnées d'une cellule
    Par patanar dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/01/2013, 21h49
  2. [XL-2007] trouver coordonnées d'un mots
    Par mustapha.ezzaouia dans le forum Excel
    Réponses: 2
    Dernier message: 14/01/2010, 18h56
  3. Trouver coordonnées x/y les plus proches
    Par tet2brick dans le forum Requêtes
    Réponses: 5
    Dernier message: 20/02/2009, 15h33
  4. [E-03] trouver coordonnées colonne graphique
    Par seba_stien dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/01/2009, 13h16
  5. Réponses: 3
    Dernier message: 26/12/2007, 19h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo