Formule affichage

Bonjour à tous,

Je me suis inscrit sur le forum car malgré mais modeste connaissance sous excel je n'arrive pas a savoir comment résoudre mon problème.

Je vous expose celui ci:

J'ai un classeur avec 3 feuilles.

La première feuille est destinée au renseignements des enfants.

La deuxième feuille est destinée pour les paiement.

Et la j'ai un soucis pour la troisième, j'aimerai savoir si c'est possible que sur cette feuille n'affiche que les Noms et prénoms de la feuille 1 (Sa j'y arrive) mais uniquement pour ceux dont il est marqué dans la colonne G de la feuille 1, "oui" dans la cellule qui correspond à la colonne . Si non, cela ne doit pas afficher le nom et prénom.

J'espère que c'est compréhensible ^^? Et possible ^^.

Merci.

Bonne journée.

Xavier

Salut,

Essayes et dis moi.

Damien

10test1.zip (7.05 Ko)

Quel rapidité ^^ , oui merci c'est ça mais il y a un défaut, lorsque je change la valeur, cela ne prend pas en compte la nouvelle valeur et donc reste affiche dans la feuille 3 si je met non par exemple.

Peut tu m'expliquer comment tu as fait ?Merci

Re,

C'est vraie, petit oubli dans le code.. Cf fichier attaché.

Pour ce qui est du fonctionnement :

Dans la feuil3 je cree la macro suivante :

Dès que l'on va slectionner l'onglet Feuil3 il fait le calcul.....

Private Sub Worksheet_Activate() 'A chaque foir que l'on active la feuille (que l'on va dessus)

Dim i, b As Long
i = 2
b = 2

Sheets("Feuil3").Range("A2", "B65536").Clear

While Sheets("Feuil1").Range("A" & i) <> "" 'Tanqt que l'on trouve des données dans la colonne A de l'onglet "Feuil1"

    If Sheets("Feuil1").Range("C" & i) = "Oui" Then  'Si on trouve la valeur "oui" dans la colonne C de l'onglet "Feuil1"
        Sheets("Feuil3").Range("A" & b) = Sheets("Feuil1").Range("A" & i)
        Sheets("Feuil3").Range("B" & b) = Sheets("Feuil1").Range("B" & i)
        b = b + 1
    End If

i = i + 1
Wend

End Sub
18test1.zip (7.19 Ko)

Vraiment un grand merci

Je teste un peu la fonction mais j'ai eu une erreur mais je ne comprend pas bien pourquoi, c'est Erreur d’exécution: L'indice n'appartient pas à la selection

Re,

Tu as l'erreur sur quel ligne (lance la macro en tapant sur la touche F8 (stepByStep) puis tape dessus jusqu'a obtention de l'erreur.

Tu es sûr de ne pas avoir modifier les noms des onglets ?

Damien

Je remonte se sujet un peu vieux maintenant car j'ai de nouveaux un petit soucis avec le code. Cela fonctionne parfaitement depuis 3 mois mais je veux faire évoluer ce code car celui ci me pose un problème pour une nouvelle utilisation; voici le problème:

- Admettons que les données son sur la feuille 1, si la colonne G (par exemple) de la feuille 1 à comme donnée "Oui", alors la colonne A et B de la feuille 1 apparaîtrons sur la feuille 2 (cela fonctionne parfaitement). Mais si par exemple je change la donnée "Oui" en "Non", alors toute les données de la feuille 2 se décale car pour celui de la ligne ou les données sont "Non" maintenant, celui ci disparaît donc les autres remontent d'une ligne prenant sa place dans la feuille 2. Mais pour chaque ligne de la feuille 2 qui contient les données de la colonne A et B de la feuille 1 , j'ai inscrit en plus des données sur les autres colonnes en rapport avec les données A et B de la feuilles1 . Mais si je change la valeur, les données que j'ai inscrite moi même ne sont pas alignée par rapport a avant, il y a un décalage et cela ne correspond plus à rien.

Donc j'aimerai savoir si c'est possible que lorsque je change la donnée de la colonne G de "Oui" à "Non" , toute la ligne correspondant sur la feuille 2 soit supprimer ou autres choses du moment qu'il n'y a pas de décalage.

Merci.

Xavier

Re,

Il faut revoir la fonction. Entierement.

Car dans le code, je supprime toutes les lignes de la colonne A et B de la feuille3.....

Je regarde.

Damien

Un grand merci pour ton aide J'attends donc

Il y a également un autre petit soucis, si par exemple il y a un vide dans la feuille 1 avec les données il s’arrête de chercher et donc ne prend pas en compte les données après ce vide

Re,

Essais ce code dans la feuill1 et supprime celui de la feuil3

Dis moi

Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Columns("C:C")) Is Nothing Then Exit Sub  'Si la modif n'a pas eu lieu sur la colonne C on sort

Application.ScreenUpdating = False
Dim origin As Worksheet
Dim wkfeuil As Worksheet
Dim c As Range, targetc As Range
Dim firstAddress As String
Dim flag As Boolean

Set origin = ActiveSheet
Set wkfeuil = ActiveWorkbook.Worksheets("Feuil3")

For Each targetc In Intersect(Target, Columns("C:C"))  'Pour toute les cellules modifiés dans la colonne C
flag = False
With wkfeuil.Range("A1", wkfeuil.Range("A65536").End(xlUp))  'On regarde dans la plage occupé de la colonne A
    Set c = .Find(targetc.Offset(0, -2).Value, LookIn:=xlValues)  'On cherche s'il y a un nom identique

    If Not c Is Nothing Then  'Si on a trouve un nom identique alors ...
        firstAddress = c.Address 'on stock l'adresse de la premiere valeur
        Do
            If c.Offset(0, 1).Value = targetc.Offset(0, -1).Value Then  'et ..Si il a le meme prenom
                If UCase(targetc.Value) = "NON" Then 'Si c non on efface la ligne :
                    If MsgBox("Vous allez supprimer la ligne: " & Split(c.Address, "$")(2) & " dans l'onglet: " & wkfeuil.Name, vbOKCancel) = vbOK Then
                        wkfeuil.Rows(c.Row & ":" & c.Row).Delete 'Ligne effacé
                    End If
                End If
                flag = True
                Exit Do 'et on sort (si on a trouve le nom et prenom et qu'il y a "oui" alors on ne fait rien
            Else  'S il a a pas le même prenom on regarde le prochain nom identique
                Set c = .FindNext(c)
            End If
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If

End With

If UCase(targetc.Value) = "OUI" And flag = False Then  'si on a mis "oui"  et pas trouve on a rajoute la ligne a la feuil3
        'origin.Rows(targetc.Row & ":" & targetc.Row).Copy 'on copie la ligne entière ou
        origin.Range(targetc.Offset(0, -2), targetc.Offset(0, -1)).Copy ' on copie seulement le nom et prenom
        wkfeuil.Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial xlPasteAll 'on colle a la derniere ligne inutilisé de A

End If
Next

Application.CutCopyMode = False
Target.Select
Application.ScreenUpdating = True

End Sub

Damien

Ca fonctionne niquel mais je vais paraître chiant mais il y a un soucis avec ce code c'est que depuis quelques mois que j'utilise, j'ai fait un peu évolué ton code original pour l'utiliser pour plusieurs feuilles en fonction d'un réponse dans cette colonne et puis d'une autre. Alors que ce code ci me limite à une seule feuille maximum sauf si je me trompe?

Merci

Xavier


Je te joint le fichier pour que tu te fasses une meilleur idée de ce que je fais actuellement

Re,

Essayes ce fichier

Damien

C'est cassi parfait , seul hic, quand par exemple je supprime une ligne dans le listing, cela ne supprime pas la ligne relative à l'enfant dans les autres feuilles associés. Sinon parfait

A oui je me demandai aussi si c'était possible que dans les autres feuilles, il regroupe le groupe des petits ensembles et des grands ensemble.

Merci

Xavier

Bonjour, boulezor

Je vois que tu attends depuis un certains temps

Voilà ton fichier

Je crois que je me suis trompé de Post

Re,

"cela ne supprime pas la ligne relative à l'enfant dans les autres feuilles associés."

Peux tu donner un exemple ?

A oui je me demandai aussi si c'était possible que dans les autres feuilles, il regroupe le groupe des petits ensembles et des grands ensemble

Tu parles d'un tri sur les groupes ? grand, moyen petit ?

Damien

Pour l'exemple:

Sur le listing, supprime la ligne Dues Charlotte. Logiquement, elle ne devrait plus apparaître dans "10 Cours", pourtant elle est toujours là.

Pour le tri des groupes, c'est bien ça, en fonction de la colonne "C" , "Petit" ou "Grand".

Merci

Re,

2eme essai : il y a du code dans le module 1, et j'ai aussi modifié le code dans les feuilles pour qu'il prenne en compte si tu change la taille du groupe.

A TESTER!

Damien

Quel dieu tout fonctionne pour le moment

Un grand merci


J'ai parlé un peu vite , le soucis étant que sur la feuille payer oui/non, tu as mis pour ceux qui ont dans la colonne C la valeur "OUI" , mais c'est la valeur "NON" qui doit prendre en compte et afficher les noms prénom en fonction. J'ai modifie dans le code mais ca bug, ca ne fonctionne pas, je comprend pas pourquoi.

Rechercher des sujets similaires à "formule affichage"