Copier des lignes avec conditions dans une autre feuille

Bonjour à tous,

Je suis étudiant en alternance et dans le cadre de mon travail j'ai dû construite un Excel pour une étude qualitative. Etant débutant dans le codage VBA, je fais appelle à votre savoir-faire qui sera largement supérieur à mes connaissances personnelles pour me venir en aide. Voici le contexte, dans le but d'une étude qualitative je remplis au fur et à mesure les résultats des questionnaires dans la feuille "Résultat". Mon souhait sera de copier dans la feuille "Exposition" les lignes entière de la feuille "Résultat" colonne G si la valeur est "oui".

De plus, je souhaiterai que en copiant les lignes dans la feuille "exposition", faire un espace sur les colonnes H et I.

Prenons un exemple, l'adhérent 210702 est exposé. Je copie la ligne de la feuille "Résultat" à "Exposition". Je copie la ligne de la colonne A à G, je laisse un espace de 2 colonnes (H et I) puis je copie de la colonne H à AU pour les coller dans les colonnes de J à AW de la feuille exposition.

J'ai trouvé un bout de code sur internet qui ressemble à ce que je voudrai obtenir mais je n'arrive pas à le modifier pour qu'il s'adapte à mon cas.

Private Sub Commandbutton2_Click()

Sheets("Résultat").Select

FinalRow = Cells(Rows.Count, 7).End(xlUp).Row

For x = 4 To FinalRow

ThisValue = Cells(x, 7).Value

If ThisValue = "oui" Then

Cells(x, 7).Resize(1, 33).Copy

Sheets("Exposition").Select

NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1

Cells(NextRow, 1).Select

ActiveSheet.Paste

End If

Next x

End sub

Merci d'avance de votre aide.

Bonjour,

Lorsque vous postez un code, merci d'utiliser les balises de codes en cliquant sur l'icone </> disponible dans le menu et en collant le code dans la fenêtre

Essayez comme ceci

Private Sub Commandbutton2_Click()
Dim finalrow As Integer, x As Integer, dlg As Integer

With Sheets("Résultat")
    finalrow = .Cells(Rows.Count, 7).End(xlUp).Row
        For x = 4 To finalrow
            If UCase(.Cells(x, 7)) = "OUI" Then
                dlg = Sheets("Exposition").Cells(Rows.Count, 1).End(xlUp).Row + 1
                If dlg = 3 Then dlg = 4
                .Range("A" & x & ":G" & x).Copy Sheets("Exposition").Range("A" & dlg)
                .Range("H" & x & ":AU" & x).Copy Sheets("Exposition").Range("J" & dlg)
            End If
        Next x
End With
End Sub

Si ok -->

Corialement

Bonjour,

dans le cadre de mon travail, j'ai rédigé une liste de fiche d'actions.

Chaque action porte un numéro et correspond à un classement en investissement et en gain.

Pour chaque bâtiment, je dois créer un mémo en reprenant les fiches d'actions qui peuvent être mis en œuvre dans ce bâtiment.

J'ai donc crée un fichier EXCEL avec 2 feuilles, l'une comportant les fiches d'actions et l'autre la trame pour générer le mémo.

J'aimerais que lorsque j'indique le n° de fiche sur le mémo que la ligne correspondante dans l'onglet fiche d'actions apparaisse.

Pouvez vous m'apporter votre aide?

Merci beaucoup

Edit Modo : Fichier supprimé. L'intervention de ZTM concerne une nouvelle demande et pas une réponse à la demande de MEUNZ

Bonjour ZTM,

Pourquoi postez vous votre demande dans ce fil ?

Merci de créer un nouveau fil avec votre demande.

Cordialement

Bonjour DAN, merci pour votre aide, je m'excuse des modalités que je n'ai pas effectué lors de mon poste.

Pour ce qui est du code, cela marche à un seul détail près...

Exemple : si dans ma feuille "Résultat" je possède 20 "oui" dans la colonne G, j'aimerais copier les 20 lignes en partant de la cellule A4 dans la feuille "exposition". Le problème étant que le code copie les lignes après la dernière ligne. Vu que c'est un outil qui est rempli au fil du temps si de base j'ai 20 lignes dans ma feuille "Exposition" et que je remplis ma feuille "Résultat" avec 5 nouveaux "oui" à la colonne G, je ne veux pas avoir 45 lignes mais bien 25 lignes dans la feuille "Exposition".

Bonjour

si dans ma feuille "Résultat" je possède 20 "oui" dans la colonne G, j'aimerais copier les 20 lignes en partant de la cellule A4 dans la feuille "exposition". Le problème étant que le code copie les lignes après la dernière ligne. Vu que c'est un outil qui est rempli au fil du temps si de base j'ai 20 lignes dans ma feuille "Exposition" et que je remplis ma feuille "Résultat" avec 5 nouveaux "oui" à la colonne G, je ne veux pas avoir 45 lignes mais bien 25 lignes dans la feuille "Exposition".

Alors on peut éventuellement effacer les lignes de la feuille Exposition avant réimportation ?
Seul souci que je vois ce sont les colonnes H et I qui seraient effacées aussi.

Soit cela n'a pas d'importance d'effacer les données en feuille expo ou alors il faut contrôler : si la ligne existe on met à jour, si elle n'existe pas on l'ajoute. Pour être sûr d'être correcte, il faudrait que le code adhérant soit unique en colonne B. Donc pas de doublons possible dans cette colonne. Est-ce le cas ?

Merci pour ta réponse rapide. Oui il faut absolument que je garde les colonnes H et I dans la feuille "Exposition". Je pense que juste mettre à jour la veuille en ajoutant les lignes qui ne sont pas présente dans la feuille "exposition" serait une bonne solution.

Je pense que juste mettre à jour la veuille en ajoutant les lignes qui ne sont pas présente dans la feuille "exposition" serait une bonne solution.

Ok mais la question principale à laquelle vous ne répondez pas est au sujet du code adhérant

Je viens faire des testes avec justement ce code adhérent et je viens de trouver la solution. Je vous remercie pour votre aide et votre rapidité !

Et plus besoin d'aide ?

Si vous en avez terminé -->

Cordialement

Rechercher des sujets similaires à "copier lignes conditions feuille"