afficher contenu de cellule en fonction du contenu d'une autre cellule

  • Initiateur de la discussion Initiateur de la discussion Jojo973
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Jojo973

XLDnaute Occasionnel
Supporter XLD
Bonjour, voici mon problème :
je souhaiterai que le contenu de certaines cellules, s'affiche en fonction du contenu d'une cellule.
Dans mon fichier (pièce jointe), j'ai deux feuilles, une où je saisis le nom et la présence d'untel, l'autre feuille contient un tableau qui récapitule les actions d'untel. J'aimerai que lorsque je saisi "absent" dans la feuille 1, "absent" soit affiché sur la plage "c5:c9" sans passer par un copié collé avec liaison. C'est pour m'éviter de saisir absent sur toute cette plage: Je pense que l'on doit passer par un code VBA, mais je n'ai aucunes idées, merci
 

Pièces jointes

Re : afficher contenu de cellule en fonction du contenu d'une autre cellule

Bonjour Cyrikou, bonjour le forum,

En pièce jointe ton fichier modifié avec le code ci-dessous :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim U As Object 'déclare la variable U (onglet Untel)
Dim DLU As Integer 'déclare la variable DLU (Dernière Ligne de l'onglet Untel)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim R As Range 'déclare la variable R (Recherche)
Dim PLU As Range 'déclare la variable PLU (PLage de l'onglet Untel)

Set U = Sheets("untel") 'définit l'onglet U
DLU = U.Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernière ligne éditée DLU de la colonne 2 (=B) de l'onglet U
DL = Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 2 (=B) de cet onglet
Set PL = Range("C4:C" & DL) 'définit la palge PL
'si le changement a lieu ailleurs que dans la plage PL, sort de la procédure
If Application.Intersect(Target, PL) Is Nothing Then Exit Sub

'définit la recherche R (Recherche le "nom" correspondant à la cellule modifiée dans la ligne 4 de l'onglet U)
Set R = U.Rows(4).Find(Target.Offset(0, -1).Value, , xlValues, xlWhole)
If Not R Is Nothing Then
    Set PLU = U.Range(U.Cells(5, R.Column), U.Cells(DLU, R.Column))
Else
    MsgBox "le " & Target.Offset(0, -1).Value & " n'existe pas !": Exit Sub 'message'sort de la procédure
End If
If Target.Value = "absent" Then 'consition 1 : si la cellule editée vaut "absent"
    PLU.Value = "absent"
Else 'sinon
    'ici le code pour si différent de "absent" que tu n'as pas précisé, je propose d'effacer ce qu'il y a marqué, tu recfifieras
    PLU.ClearContents
End If 'fin de la condition 2
End Sub
Le fichier :
 

Pièces jointes

Re : afficher contenu de cellule en fonction du contenu d'une autre cellule

Bon finalement ce n'est pas si simple d'adapter le code, si j'ai bien compris , on par d'une cellule vide de l'accueil que l'on rattache à une cellule vide de l'arrivée, puis par une boucle, on y affecte la valeur "Absent" par comparaison, 😕, c'est là que tout se gâte, ne maîtrisant pas grand en chose en vba, je n'arrive pas à adapter le code.

Je joins un fichier modifié, car en fait le code doit s'appliquer, sur plusieurs feuilles, et sur une seule colonne, donc là je coince
 

Pièces jointes

Re : afficher contenu de cellule en fonction du contenu d'une autre cellule

Bon finalement ce n'est pas si simple d'adapter le code, si j'ai bien compris , on par d'une cellule vide de l'accueil que l'on rattache à une cellule vide de l'arrivée, puis par une boucle, on y affecte la valeur "Absent" par comparaison, 😕, c'est là que tout se gâte, ne maîtrisant pas grand en chose en vba, je n'arrive pas à adapter le code.

Je joins un fichier modifié, car en fait le code doit s'appliquer, sur plusieurs feuilles, et sur une seule colonne, donc là je coince

Tu nous redonne le même fichier alors que le code doit s'appliquer, sur plusieurs feuilles !

Comment veux-tu que l'on puisse t'aider !

Bonne soirée
 
Re : afficher contenu de cellule en fonction du contenu d'une autre cellule

Bon explication de ma macro qui demande seulement à modifier s'il a lieu les références des lignes et des colonnes !

Code:
Sub essai()
Dim i As Long
Dim j As Integer
Dim k As Long
Application.ScreenUpdating = False
Sheets("untel").Range("C5:ZA65000").ClearContents ' cellules C5:ZA65000 effacées
For i = 4 To 65536 ' boucle de la ligne 4 à 65536 ( maximum excel 2003)
 If Sheets("choix").Cells(i, 2) <> "" Then ' si la cellule ligne i - colonne 2 différente de vide alors
 For j = 3 To 256 ' boucle de la colonne 3 à 256 ( maximum excel 2003)
 If Sheets("choix").Cells(i, 3) = "absent" And Sheets("choix").Cells(i, 2) = Sheets("untel").Cells(4, j) Then
 ' si la cellule ligne i - colonne 3 = absent et si la cellule ligne i - colonne 2 = feuille untel cellule ligne 4 - colonne j alors
 If Sheets("untel").Cells(i + 1, 2) <> "" And Sheets("untel").Cells(i + 1, j) = "" Then
  ' si feuille untel cellule ligne i + 1 - colonne 2 différent de vide et cellule ligne i + 1 - colonne j est vide alors
  For k = 5 To 65536 ' boucle de la ligne 5 à 65536
  If Sheets("untel").Cells(k, 2) <> "" And Sheets("untel").Cells(k, j) = "" Then
  ' si feuille untel cellule ligne k - colonne 2 différent de vide et cellule ligne k - colonne j est vide alors
   Sheets("untel").Cells(k, j) = "absent" ' feuille untel cellule ligne k - colonne j = absent
   Else 'sinon
   Exit For ' sortie de la boucle
  End If ' fin de si
  Next k ' fin boucle k
 Else ' sinon
 Exit For ' sortie de la boucle
 End If ' fin si
 ElseIf Sheets("untel").Cells(4, j) <> Sheets("choix").Cells(i, 2) And Sheets("choix").Cells(i, 3) = "absent" _
 And Sheets("untel").Cells(4, j) <> "" Then
 ' sinon si cellule ligne 4 - colonne j différent de cellule ligne i - colonne 2 et cellule ligne i - colonne 3
 ' = absent et feuille untel cellule ligne 4 - colonne j différent de vide alors (next j)
 Else 'sinon
 Exit For ' sortie de la boucle
 End If 'fin si
 Next j ' fin de la boucle j
 Else ' sinon
 Exit Sub ' sortie de la macro
 End If ' fin si
Next i ' fin boucle i
Application.ScreenUpdating = True
End Sub
 

Pièces jointes

Re : afficher contenu de cellule en fonction du contenu d'une autre cellule

Merci pour les commentaires, cela m' a pas mal aidé, j'ai donc essayé d'adapter le code, j'ai supprimé la boucle j, car il n'y a plus qu'une colonne. j'ai aussi configuré exactement les emplacements des tableaux que j' souhaite utiliser dans mon futur fichier, j'ai du me tromper quelque part car cela ne fonctionne pas, étant donné que le tableau de la page choix ne correspond pas à l'emplacement du tableau, j'ai donc enlevé 7 (i-7) pour correspondre au (i+1) se l'exemple original, alors est une routine ou bien une opération?
je joins le fichier avec le code adapté mais pas fonctionnel🙄
 

Pièces jointes

Re : afficher contenu de cellule en fonction du contenu d'une autre cellule

Bonsoir à tous,

Je ne comprends pas que tu nous donne un fichier vierge de toutes macros !

De plus, la boucle j ( pour les colonnes) est indispensable même si elle ne comporte qu'une colonne !

Enfin i +1 est égale pour commencer à la ligne 5 ( 4+1) de la feuille untel !

Il ne faut pas faire n'importe de quoi avec les lignes et les colonnes !
 
Re : afficher contenu de cellule en fonction du contenu d'une autre cellule

en fait je me suis trompé de fichier( confondu les dossiers), là voici le bon, mon message précédent n'en sera que plus compréhensible

Pourquoi avoir changé les lignes et colonnes ???

De plus, à quoi correspond " action 1 - action 2 etc......" dans les feuilles ajoutées qui ne sont pas répertorié dans la feuille "Choix" !!!!

Cela ne correspond pas du tout à la première demande et cette dernière demande est particulièrement utopique !
 
Re : afficher contenu de cellule en fonction du contenu d'une autre cellule

action : ce sont des compétences, mon but est de faire en sorte que dans la feuille choix, je puisse choisir la présences des participants, j'ai donc fait une feuille par participants. pour le coup il faudra que je fasse un module par feuille avec une incrémentation du nom "essai" (1,2,3) correspondant aux feuilles et un appel de ces procédures dans la accueil.

Si les 2 tableaux ne sont pas au même endroit c'est que dans cet exemple, ils sont mis comme sur mon fichier définitif. donc est ce possible d'adapter le code?
 
Re : afficher contenu de cellule en fonction du contenu d'une autre cellule

bonjour, voilà j'ai modifié le code est obtenu ce que je veux à peu près, en effet, la valeur retenue pour la valeur "absent" ou "" est la dernière ligne de ma sélection, hors il faut que les lignes soient indépendantes,
c'est a dire
cellule C13 (feuille choix)= "absent" doit marquer "absent" dans F9 feuille "untel 1"
cellule C14 (feuille choix)= "" doit marquer "" dans F9 feuille "untel 2"
etc...
Voici le code
Code:
Sub test2()
Dim i As Long
Dim j As Integer
For j = 2 To 4
For i = 13 To 15
If Sheets("choix").Range("C" & i) = "absent" Then
Sheets(j).Range("F9:F12") = Sheets("choix").Range("C" & i)
Else:
If Sheets("choix").Range("C" & i) = "" Then
Sheets(j).Range("F9:F12").ClearContents
End If
End If
Next i
Next j
End Sub
je joins le fichier
 

Pièces jointes

Re : afficher contenu de cellule en fonction du contenu d'une autre cellule

Bon j’espère ne pas mettre trompé !

Néanmoins et compte tenu que les tableaux de chaque feuille ne sont pas au même endroit il convient de mettre une nouvelle boucle pour chaque feuille ajoutée ( exemple pour la feuille 2 colonne 5 et ligne 5) :

Code:
If Sheets("choix").Cells(i, 3) = "absent" And Sheets("choix").Cells(i, 2) = Sheets(2).Cells(i - 8, 5) Then

For k = 5 To 65536 ' boucle de la ligne 5 à 65536
  If Sheets(2).Cells(k, 5) <> "" And Sheets(2).Cells(k, 5) = Sheets("choix").Cells(i, 2) Then
   Sheets(2).Cells(k, 6) = "absent"
   Exit For ' sortie de la boucle
  End If ' fin de si
  Next k ' fin boucle k
  End If

end if
 

Pièces jointes

Re : afficher contenu de cellule en fonction du contenu d'une autre cellule

Merci pour tout, là je vous joins un fichier définitif, j'ai intégré le code pour chacune des pages, c'est un peu lourd mais efficace. Je n'ai pas trop suivi les codes proposés car il faut s'imprégner de la logique du concepteur et chacun a sa logique mais il m'a permis de comprendre le principe, merci.
😎
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour