Formule avec condition
Bonjour,
je me présente je m'appelle maxime. Débutant en Excel et souhaitant progresser.
Je suis en train de créer un tableau pour le boulot. Ma formule ne fonctionne pas, donc je m'en remet à votre savoir.
je cherche une formule qui :
- cherche sur une plage de cellules un nom. si le nom y est, faut chercher sur une autre plage de cellules un mot, et si les deux conditions sont réunis mettre la valeur d'une cellules sinon rien.
la où je cale c'est que je fais une formule avec "Si(et" mais j'ai une erreur car je ne peux pas mettre une plage de cellules.
J'espère que je me suis bien exprimé.
Merci à vous
Bonjour,
Et si vous nous mettiez un fichier (sans données confidentielles) à disposition, on pourrait peut-être vous aider.
Cdlt
oui, bien sur. désolé.
la formule ça serait de chercher dans la plage bleu un nom. si le nom y est, identifié le thème (orange), puis mettre en face du nom la durée (en vert).
merci de votre aide
C'est pas clair, mettez un exemple concret.
j'aimerais trouver une formule qui remplisse les colonnes P ou Q avec la valeur de la celulle A6, lorsque je rempli la plage participant (bleu) et le thème. les colonnes P et Q se remplissent sur la ligne de celui qui a participé avec la cellule A6 (c'est une durée).
dur d'expliquer
merci
Désolé, mais je ne vois pas le rapport avec l'heure en A6, il faudrait que vous mettiez en colonne P et Q quelques résultats attendus (pour les 3 premiers par exemple)
j'ai rempli le fichier au maximum, je comprend que vous n'arrivez pas a comprendre.
chaque fois qu'il y a une formation, un responsable doit remplir une ligne de la feuille "FFEN (date, horaire duree, noms des participants, le thème de la formation).
Dans la feuille "Tableau résumé" j'aimerais qu'il reprenne ce que chaque personnel a fait comme formation et leur durée.
j'espère que vous comprendrez mieux.
merci
Bonsoir,
Voici le fichier, il suffit de cliquer sur le bouton "Comptage".
Cdlt
pouvez vous m'expliquer comment vous avez fait car je dois le faire sur d'autres feuilles. ou me dire comment ça s'appelle et je ferais une recherche.
merci beaucoup
Bonjour,
nickel merci c'est exactement ça. pouvez vous m'expliquer comment vous avez fait car je dois le faire sur d'autres feuilles. ou me dire comment ça s'appelle et je ferais une recherche.
merci beaucoup
pouvez vous m'expliquer comment vous avez fait, Oui, c'est fait avec une macro en VBA, mais si vous me le demandez, c'est que vous ne devait pas connaître.
car je dois le faire sur d'autres feuilles. du même classeur?
Tout d'abord: Vos listes de noms ne correspondaient pas entre la feuille "FFEN" et la feuille "Tableau résumé", dans la première, les prénoms étaient inscrits qu'avec les initiales , alors que dans la deuxième , les prénoms étaient en entier; il faut que les 2 listes soient identiques. j'ai donc modifié la 2ème. Donc, pour les autres feuilles, le problème se représentera-t-il ?
Conclusion: il serait plus judicieux de mettre le fichier à disposition avec quelques feuilles pour que je puisse vous le faire.
Cdlt
bonjour
voila j'ai quasiment fait le plus gros du classeur.
Désolé Arturo83 j'ai du effacer ce que tu avais fait.
J'ai créé une feuille "formulaire". Quand elle est rempli, elle incrémente le feuille "liste des manœuvres".
J'ai créé une feuille tableau, avec dedans un tableau avec tout les noms.
j'aimerais que ce tableau se remplisse tout seul lorsque l'on ajoute une manœuvre.
même idée que le précédent tableau, il faudrait que le tableau soit rempli avec la durée de la manœuvre. Il y a plusieurs thème (ETEX, SMS,EMV,...), chaque thème je les ais séparé en deux. c'est à dire exemple : ETEX "FMPA 2024" ou ETEX autres.
je pensais partir sur la formule RECHERCHEV, mais je n'y arrive pas.
merci de votre aide je cale, pas assez de connaissances.
autre info j'ai ma liste de personnel qui change parfois 2 ou 3 noms par semestre
Bonsoir,
Voila la modif, j'ai mis un bouton à part sur le formulaire, mais vous pouvez appeler cette macro à partir de la vôtre.
Cdlt
j'ai ouvert, mais cela ne fonctionne pas. mon bouton ne fonctionne plus et a chaque fois que j'appuie sur le votre les durées changent.
comment vous faites pour dire d'aller incrémenter le tableau?
j'essaye de mettre la formule somme.si.ens mais j'ai une erreur. je cale
Bonjour,
Ne vous obstinez pas à mettre une formule, il faut passer par du code VBA.
J'ai repris le fichier et agrémenté le code de commentaires pour que vous puissiez comprendre comment cela fonctionne.
Le code de votre macro est issu de l'enregistreur de macro, mais il ne faut pas le conserver tel quel, beaucoup de lignes inutiles et les "Select" nuisent à l'efficacité de la lecture du code et à sa vitesse d'exécution.
En lisant le code fourni, peut-être que cela vous aidera à corriger le votre, du moins, essayez.
Le fichier:
le code avec commentaires (pour accéder au code, faire ALT + F11, le code est dans le module 1):
Sub Comptage()
'déclaration des variables
Dim f1 As Worksheet, f2 As Worksheet
Dim DerLig_f2 As Long, i As Long, j As Long
Dim Duree As Date
Dim Theme As String, AutreTheme As String, Init_Theme As String, Init_AutreTheme As String
Dim DeuxPoints_Theme As Long, DeuxPoints_AutreTheme As Long
Application.ScreenUpdating = False 'Empêche les rafraichissements de l'écran lors de l'exécution du code, et augmente la vitesse d'éxcution
Set f1 = Sheets("Formulaire") 'attribution de la variable f1 )à la feuille "Formulaire"
Set f2 = Sheets("Tableau ") 'attribution de la variable f2 )à la feuille "Tableau"
DerLig_f2 = f2.Range("B" & Rows.Count).End(xlUp).Row 'recherche la dernière ligne de f2
Duree = f1.Cells(13, "D") 'on récupère la valeur de la durée
Theme = f1.Cells(16, "D") 'on récupère la valeur du thème
'si "Theme" est vide alors on va lire "Autre theme"
If Theme = "" Then GoTo Autre_Theme
DeuxPoints_Theme = InStr(1, Theme, " :", 1) 'on recherche la position des ":" dans le nom de "Theme"
Init_Theme = Left(Theme, DeuxPoints_Theme - 1) 'on ne conserve que la partie gauche de theme (tout ce qui est avant les 2 points ":")
Autre_Theme:
AutreTheme = Trim(f1.Cells(19, "D")) 'on récupère la valeur de l'autre thème
'si "Theme" est vide alors on va lire "Controle_Présence_Themes"
Init_AutreTheme = Trim(AutreTheme) 'on supprime les espaces inutiles dans AutreTheme
Controle_conformité:
If Theme = "" And AutreTheme = "" Then
MsgBox "Les cellules ""Theme"" et ""Autre theme"" sont vides" 'contrôle la présence de thème ou d'autre thème
Exit Sub 'si absence des 2, alors on sort du programme
ElseIf f1.Cells(9, "D") = "" And f1.Cells(11, "D") Then 'contrôle de la présence des horaires de début et de fin
MsgBox "Les horaires de début et de fin ne sont pas remplis sont vides"
Exit Sub 'si absence des 2, alors on sort du programme
ElseIf f1.Cells(5, "F") Then ' contrôle la présence du premier participant
MsgBox "il n'y a pas de participants"
Exit Sub 'si absence du premier participant, alors on sort du programme
End If
For i = 5 To 13 Step 2 'de la ligne 5 à 13 en sautant 1 ligne sur 2
For j = 6 To 10 Step 2 'de la colonne 6 à 10 en sautant 1 colonne sur 2
If f1.Cells(i, j) <> "" Then 'si la cellule traitée n'est pas vide, alors:
Lig = Application.Match(f1.Cells(i, j), f2.Range("B1:B" & DerLig_f2), 0) 'on recherche le nom du participant en cours de lecture dans f2, on récupère son N° de ligne
Select Case Init_Theme 'selon la valeur du "Theme" (uniquement la partie gauche avant les 2 points)
Case Is = "ETEX" 'si c'est ETEX,
f2.Cells(Lig, "C") = f2.Cells(Lig, "C") + Duree 'dans f2, dans la colonne correspondant à ETEX en "FMPA2024", on ajoute la durée on contenu de la cellule
Case Is = "SMS"
f2.Cells(Lig, "E") = f2.Cells(Lig, "E") + Duree
Case Is = "EMV"
f2.Cells(Lig, "G") = f2.Cells(Lig, "G") + Duree
Case Is = "PPBE"
f2.Cells(Lig, "I") = f2.Cells(Lig, "I") + Duree
Case Is = "SR"
f2.Cells(Lig, "K") = f2.Cells(Lig, "K") + Duree
Case Is = "MEA"
f2.Cells(Lig, "M") = f2.Cells(Lig, "M") + Duree
Case Is = "FDFEN"
f2.Cells(Lig, "O") = f2.Cells(Lig, "O") + Duree
End Select
Select Case Init_AutreTheme 'selon la valeur de "AutreTheme"
Case Is = "ETEX" 'si c'est ETEX,
f2.Cells(Lig, "D") = f2.Cells(Lig, "D") + Duree 'dans f2, dans la colonne correspondant à ETEX dans "Autre", on ajoute la durée on contenu de la cellule
Case Is = "SMS"
f2.Cells(Lig, "F") = f2.Cells(Lig, "F") + Duree
Case Is = "EMV"
f2.Cells(Lig, "H") = f2.Cells(Lig, "H") + Duree
Case Is = "PPBE"
f2.Cells(Lig, "J") = f2.Cells(Lig, "J") + Duree
Case Is = "SR"
f2.Cells(Lig, "L") = f2.Cells(Lig, "L") + Duree
Case Is = "MEA"
f2.Cells(Lig, "N") = f2.Cells(Lig, "N") + Duree
Case Is = "FDFEN"
f2.Cells(Lig, "P") = f2.Cells(Lig, "P") + Duree
End Select
End If
Next j
Next i
f2.Select 'on sélectionne la feuille f2
'on libère la mémoire
Set f1 = Nothing
Set f2 = Nothing
End Sub
Cdlt
merci pour l'explication.
le bouton ne marche pas il marque une erreur.
Autre info, lorsque j'ajoute une manœuvre, elle va se recopier dans la feuille liste de manœuvre, puis le tableau se rempli à partir de la liste de manoeuvre. c'est possible?
Bonsoir,
le bouton ne marche pas il marque une erreur. Quelle erreur?
*********************************************************************************************
Autre info, lorsque j'ajoute une manœuvre, elle va se recopier dans la feuille liste de manœuvre, puis le tableau se rempli à partir de la liste de manoeuvre. c'est possible?
Pas compris le sens de la phrase, si je comprends bien l'utilisation de votre fichier. Vous devez remplir la feuille "Formulaire " puis cliquer sur le bouton "pour ajouter une manoeuvre", c'est bien cela? Alors que vient faire ceci: puis le tableau se rempli à partir de la liste de manoeuvre
[s=co-548dd4][/s]