Calcul après filtre puis coller

Résolu
etienneja -  
 etienneja -
Bonjour,

J'ai beau chercher, je ne trouve pas du tout.

Voici mon exemple:
J'ai un tableau de données de plusieurs colonnes dont une colonne de "médecin" ou d'"infirmier".
Je filtre et selectionne "médecin".

Je voudrais que le nombre total de "médecin" se reporte immédiatement dans une cellule prédéfinie dans une autre feuille2.

Merci pour votre aide, je bloque !
Bonne journée.

Etienne

3 réponses

  1. quent
     
    bonjour,
    tu peut crée une macro avec le code suivant :

    i = 1
    nombre = 0
    While Cells(i, 1) <> ""
    If Cells(i, 1) = "médecin" Then nombre = nombre + 1
    i = i + 1
    Wend
    Sheets("feuil2").Range("A1") = nombre

    puis tu fais un bouton qui appelle cette macro.
    Par contre aux deux endroits ou tu as cells(i, 1) tu remplaces le 1 par le numéro de la colonne et la où il y a feuil2 tu met le nom de la feuille ou tu met le nombre médecin et la ou il y a A1 c'est la cellule ou tu met le nombre de médecin
    1
    1. etienneja
       
      Tiens, en fait:
      Et si j'ai deux colonnes à filtrer (2 conditions) avant de calculer ? Ca complique, non ?
      0
    2. etienneja
       
      par contre, quand je mets plusieurs macro à la suite avec recherche de noms différents et cellule différente, ca me colle le chiffre 0 dans toutes les cellules sélectionnées....

      je n'arrive pas à savoir pourquoi... (Désolé, je suis encore débutant !)
      0
  2. quent
     
    bonjour,
    si j'ai bien compris tu veux conter le nombre de medecin dans 2 colonnes differentes et mettre le resultat dans une cellule ?
    si c'est cela voici le code :

    i = 1
    nombre = 0
    While Cells(i, 1) <> "" or Cells(i, 2) <> ""
    If Cells(i, 1) = "médecin" or Cells(i, 2) = "médecin" Then nombre = nombre + 1
    i = i + 1
    Wend
    Sheets("feuil2").Range("A1") = nombre

    en remplacent tout comme la premiere fois et en plus dans Cells(i, 2) tu remplace le 2 par la deuxieme colonne

    si ce n'est pas cela que tu voulais, pourrais tu réexpliquer ?
    1
    1. etienneja
       
      Merci pour cette explication. Interessant pour une prochaine fois.
      Mais dans cet exemple, je souhaite compter le nombre de médecins de la colonne A si et seulement si le mot "Urgence" se trouve sur la meme ligne dans la colonne B.

      En gros, je veux différencier les medecins d'un service à un autre.

      Je pensais à un truc comme ca mais ca marche pas:

      i = 1
      nombre = 0
      While Cells(i, 7) <> ""
      If Cells(i, 7) = "Médecin" And If Cells(i, 9) = "Urgence" Then nombre = nombre + 1
      i = i + 1
      Wend
      Sheets("SITEFF").Range("L25") = nombre
      0
    2. quent
       
      ha ok j'ai compris !!!
      dans ce cas tu y es presque mais il faut mettre le if qu'une fois comme ca :

      i = 1
      nombre = 0
      While Cells(i, 7) <> ""
      If Cells(i, 7) = "Médecin" And Cells(i, 9) = "Urgence" Then nombre = nombre + 1
      i = i + 1
      Wend
      Sheets("SITEFF").Range("L25") = nombre
      0
    3. etienneja
       
      Parfait, j'ai trouvé.

      Il suffit de faire ce que tu proposes et remplacer par And au lieu de or.
      Et ne pas mettre "If" après "And". :)

      Merci beaucoup !!
      0
    4. quent
       
      si tu as autant de de cellules remplis dans les deux colonnes, tu n'as pas besoins du and ni de ce qu'il y a apres dans le while
      en gros :
      While Cells(i, 7) <> "" and Cells(i, 2) <> ""
      c'est inutile tu met juste
      While Cells(i, 7) <> ""
      0
    5. etienneja
       
      Nikel. Ca fonctionne parfaitement.
      Plus qu'à faire pareil pour tous les autres fonctions et service... pfiou ! :)

      Merci beaucoup !
      0
  3. etienneja
     
    Bonjour Quent,

    Merci beaucoup pour ta réactivité.
    Je viens de tester et c'est exactement cela !

    Merci !
    Bonne journée.

    Etienne

    EDIT: Si on répète plusieurs fois la macro avec des données différentes, ca marque 0 partout.... Pourquoi ?!
    0