Vba
Résolu/Fermé
herve27f
Messages postés
7
Date d'inscription
samedi 27 février 2016
Statut
Membre
Dernière intervention
16 avril 2016
-
12 avril 2016 à 18:46
herve27f Messages postés 7 Date d'inscription samedi 27 février 2016 Statut Membre Dernière intervention 16 avril 2016 - 16 avril 2016 à 14:50
herve27f Messages postés 7 Date d'inscription samedi 27 février 2016 Statut Membre Dernière intervention 16 avril 2016 - 16 avril 2016 à 14:50
Bonjour,
quelqu'un pourrait-t-il m aider
je suis un utilisateur hyper débutant je cherche à copier et coller sur une autre feuille des cellules sous conditions de résultat d'une cellule
merci d'avance
quelqu'un pourrait-t-il m aider
je suis un utilisateur hyper débutant je cherche à copier et coller sur une autre feuille des cellules sous conditions de résultat d'une cellule
merci d'avance
5 réponses
herve27f
Messages postés
7
Date d'inscription
samedi 27 février 2016
Statut
Membre
Dernière intervention
16 avril 2016
13 avril 2016 à 19:37
13 avril 2016 à 19:37
merci beaucoup de votre réponse je bosse dessus ce weekend et je ne manquerai pas de vous répondre plus longuement
amicalement ! =)
amicalement ! =)
Patrice33740
Messages postés
8561
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
15 mars 2025
1 779
13 avril 2016 à 20:20
13 avril 2016 à 20:20
Bonjour,
Puisque tu commences, prends les bonnes habitudes dès le début, utilises des références de cellules précises (classeur.feuille.cellules), évites les références implicites et si possible les objets actifs :
Puisque tu commences, prends les bonnes habitudes dès le début, utilises des références de cellules précises (classeur.feuille.cellules), évites les références implicites et si possible les objets actifs :
Option Explicit Public Sub CopierSousCondition() Dim Plage_à_copier As Range Dim Cellule_de_destination As Range Dim Cellule_à_tester As Range Dim Condition_remplie As Boolean ' Définition des varaibles Set Plage_à_copier = ThisWorkbook.Worksheets(1).Range("C4:F12") Set Cellule_de_destination = ThisWorkbook.Worksheets(2).Range("H3") Set Cellule_à_tester = ThisWorkbook.Worksheets(1).Range("B12") Condition_remplie = Cellule_à_tester.Value = 15 ' Copie sous condition If Condition_remplie Then Plage_à_copier.Copy Destination:=Cellule_de_destination End If End Sub
herve27f
Messages postés
7
Date d'inscription
samedi 27 février 2016
Statut
Membre
Dernière intervention
16 avril 2016
16 avril 2016 à 11:21
16 avril 2016 à 11:21
tout d'abord merci à tous pour c'est renseignement c'est vraiment super-sympa de passer de votre temps à aider les autres
pour en revenir à mon problème je ne m'en sors toujours pas je me suis certainement mal expliqué.
J'ai une feuille de calcul avec plusieurs lignes non définies ainsi que plusieurs colonnes j'aimerais tester une cellule et selon résulta de celle-ci copier et coller des cellules de cette même ligne sur une autre feuille j’espère avoir été plus explicite par avance merci
j'essai bien evidament d'avancer de mon cote en vous remercient par avance
amicalment
pour en revenir à mon problème je ne m'en sors toujours pas je me suis certainement mal expliqué.
J'ai une feuille de calcul avec plusieurs lignes non définies ainsi que plusieurs colonnes j'aimerais tester une cellule et selon résulta de celle-ci copier et coller des cellules de cette même ligne sur une autre feuille j’espère avoir été plus explicite par avance merci
j'essai bien evidament d'avancer de mon cote en vous remercient par avance
amicalment
Patrice33740
Messages postés
8561
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
15 mars 2025
1 779
Modifié par Patrice33740 le 16/04/2016 à 12:32
Modifié par Patrice33740 le 16/04/2016 à 12:32
Bonjour,
Effectivement, tes explications manquent cruellement de précisions !!!
« J'ai une feuille de calcul avec plusieurs lignes non définies ... »
Est-ce à dire que tu ne connais pas le contenu de ces lignes, ou que certaines lignes sont vides (non définies) ou que tu ne sais pas combien de lignes il y a ? ou ... ?
« ... ainsi que plusieurs colonnes ... »
même question que pour les lignes ?
« ... j'aimerais tester ... »
Quel genre de test ?
« ... une cellule .... »
Laquelle ?
« .... et selon résultat de celle-ci ....>
Quel type de résultat ?
Patrice
Effectivement, tes explications manquent cruellement de précisions !!!
« J'ai une feuille de calcul avec plusieurs lignes non définies ... »
Est-ce à dire que tu ne connais pas le contenu de ces lignes, ou que certaines lignes sont vides (non définies) ou que tu ne sais pas combien de lignes il y a ? ou ... ?
« ... ainsi que plusieurs colonnes ... »
même question que pour les lignes ?
« ... j'aimerais tester ... »
Quel genre de test ?
« ... une cellule .... »
Laquelle ?
« .... et selon résultat de celle-ci ....>
Quel type de résultat ?
Patrice
herve27f
Messages postés
7
Date d'inscription
samedi 27 février 2016
Statut
Membre
Dernière intervention
16 avril 2016
>
Patrice33740
Messages postés
8561
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
15 mars 2025
16 avril 2016 à 13:01
16 avril 2016 à 13:01
encore merci de ton implication
je ne connais pas le nombres lignes
la cellule a tester( k ) doit etre = a 1 pour copier et coller des cellule de cette meme ligne dans une autre feuille
ps le tableau a tester comporte + de 200 ligne
encore merci
je galere
je ne connais pas le nombres lignes
la cellule a tester( k ) doit etre = a 1 pour copier et coller des cellule de cette meme ligne dans une autre feuille
ps le tableau a tester comporte + de 200 ligne
encore merci
je galere
Patrice33740
Messages postés
8561
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
15 mars 2025
1 779
16 avril 2016 à 14:16
16 avril 2016 à 14:16
Re,
Si j'ai bien compris ton problème :
- Tu veux tester chaque cellule de la colonne K d'un tableau dont tu ne connais pas le nombre de lignes.
- Quand la cellule de la colonne k contient la valeur 1, tu veux copier la ligne correspondante vers une autre feuille.
Voila un code :
Si j'ai bien compris ton problème :
- Tu veux tester chaque cellule de la colonne K d'un tableau dont tu ne connais pas le nombre de lignes.
- Quand la cellule de la colonne k contient la valeur 1, tu veux copier la ligne correspondante vers une autre feuille.
Voila un code :
Option Explicit Public Sub CopierSousCondition() Dim Plage_à_analyser As Range Dim Plage_à_tester As Range Dim Cellule_de_destination As Range Dim Cellule_à_tester As Range Dim Condition_remplie As Boolean ' Définition des variables ' - plage des cellules contenant les données Set Plage_à_analyser = _ ThisWorkbook.Worksheets(1).Range("A1").CurrentRegion ' - plage des cellules à tester Set Plage_à_tester = Plage_à_analyser.Columns("K") ' - cellule de destination Set Cellule_de_destination = ThisWorkbook.Worksheets(2).Range("A1") ' Copie de la ligne des titres ' - Copie de la 1° ligne Plage_à_analyser.Rows(1).Copy Destination:=Cellule_de_destination ' - Définition de la destination suivante Set Cellule_de_destination = Cellule_de_destination.Offset(1) ' Analyse de la plage For Each Cellule_à_tester In Plage_à_tester.Cells ' - Test de la cellule de la colonne K Condition_remplie = Cellule_à_tester.Value = 1 ' - Copie sous condition If Condition_remplie Then ' -- Copie de la ligne entière Cellule_à_tester.EntireRow.Copy _ Destination:=Cellule_de_destination ' -- Définition de la destination suivante Set Cellule_de_destination = Cellule_de_destination.Offset(1) End If Next Cellule_à_tester End Sub
herve27f
Messages postés
7
Date d'inscription
samedi 27 février 2016
Statut
Membre
Dernière intervention
16 avril 2016
16 avril 2016 à 14:41
16 avril 2016 à 14:41
merci encore patrice
je ne veux pas copier toute la ligne mais plusieurs cellules provenant de cette même ligne en gros exemple(si dans le feuil9 k17 = 1 j'aimerais copier à17, b17, d17, e17 dans feuil6 et ainsi de suite encore 1000 fois merci
je ne veux pas copier toute la ligne mais plusieurs cellules provenant de cette même ligne en gros exemple(si dans le feuil9 k17 = 1 j'aimerais copier à17, b17, d17, e17 dans feuil6 et ainsi de suite encore 1000 fois merci
Patrice33740
Messages postés
8561
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
15 mars 2025
1 779
>
herve27f
Messages postés
7
Date d'inscription
samedi 27 février 2016
Statut
Membre
Dernière intervention
16 avril 2016
16 avril 2016 à 14:44
16 avril 2016 à 14:44
Re,
Le code ci-dessus est universel et documenté, il suffit que :
1) tu essaies de le comprendre.
2) tu l'adaptes à ton besoin
Le code ci-dessus est universel et documenté, il suffit que :
1) tu essaies de le comprendre.
2) tu l'adaptes à ton besoin
herve27f
Messages postés
7
Date d'inscription
samedi 27 février 2016
Statut
Membre
Dernière intervention
16 avril 2016
>
Patrice33740
Messages postés
8561
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
15 mars 2025
16 avril 2016 à 14:50
16 avril 2016 à 14:50
merci patrice pour ta reponse elle m'aide beaucoup tres explicite et donc je vais essayer de comprendre
bonne journee
bonne journee
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
13 avril 2016 à 03:07
13 avril 2016 à 03:07
Bonjour herve27f,
Pour cet exemple, tu dois avoir un classeur Excel avec 2 feuilles de calcul. Pour ces 2 feuilles, fais ceci :
a) Colonne A : Largeur 5 b) Lignes 1 à 7 : Hauteur 18
c) Zoom de la feuille : 120 % (à adapter selon la taille de ton écran)
C'est tout pour la feuille 2 : laisses-la vierge. Comme un dessin vaut
mieux qu'un long discours, voici une copie d'écran de la feuille 1 :

Tous les nombres de la feuille 1 sont des nombres choisis au hasard.
La cellule B2 est là pour ce que tu demandais : « sous conditions de résultat d'une cellule ». En effet, c'est elle qui sera testée :
si B2 <> 75, sortir aussitôt.
Tu trouveras ci-dessous un code VBA qui contient 4 subs. Et toutes font un copier / coller. Mais pourquoi 4 ?
----------------------------------------------------------------------------
1) Parce que les 2 premières subs font le copier / coller à partir de la feuille 1 alors que les 2 subs suivantes font le copier / coller à partir de la feuille 2. Et par précaution, la 1ère ligne de la sub EssaiN teste la feuille de départ et sort immédiatement de la sub si tu ne la lance pas à partir de la bonne feuille !
----------------------------------------------------------------------------
2) Les subs Essai1 et Essai3 font une copie intégrale, formats compris : formats des nombres, alignement, bordures, motifs
et autres ; ce sont 2 exemples de Paste (collage).
Si tu veux faire la copie sans ces formats, avec uniquement
les valeurs, utilises alors les subs Essai2 ou Essai4 : ce sont
2 exemples de PasteSpecial (collage spécial).
----------------------------------------------------------------------------
C'est bien sûr Copy qui fait la copie dans le Presse-papiers.
Et c'est lui qui affiche une bordure de tirets défilants autour de la plage source. 2 solutions pour enlever cette bordure clignottante : manuellement, appui sur la touche Échap ; par le code VBA : Application.CutCopyMode = False.
Je ne t'ai pas tout dit sur Paste et PasteSpecial : tu trouveras plein d'autres informations complémentaires dans l'aide de Visual Basic.
Mais c'est quand même un bon début ! 😉
Voici maintenant le code (à toi de bien l'étudier pour en analyser toutes les différences) :
Bonne chance ! 😊
Pour cet exemple, tu dois avoir un classeur Excel avec 2 feuilles de calcul. Pour ces 2 feuilles, fais ceci :
a) Colonne A : Largeur 5 b) Lignes 1 à 7 : Hauteur 18
c) Zoom de la feuille : 120 % (à adapter selon la taille de ton écran)
C'est tout pour la feuille 2 : laisses-la vierge. Comme un dessin vaut
mieux qu'un long discours, voici une copie d'écran de la feuille 1 :

Tous les nombres de la feuille 1 sont des nombres choisis au hasard.
La cellule B2 est là pour ce que tu demandais : « sous conditions de résultat d'une cellule ». En effet, c'est elle qui sera testée :
si B2 <> 75, sortir aussitôt.
Tu trouveras ci-dessous un code VBA qui contient 4 subs. Et toutes font un copier / coller. Mais pourquoi 4 ?
----------------------------------------------------------------------------
1) Parce que les 2 premières subs font le copier / coller à partir de la feuille 1 alors que les 2 subs suivantes font le copier / coller à partir de la feuille 2. Et par précaution, la 1ère ligne de la sub EssaiN teste la feuille de départ et sort immédiatement de la sub si tu ne la lance pas à partir de la bonne feuille !
----------------------------------------------------------------------------
2) Les subs Essai1 et Essai3 font une copie intégrale, formats compris : formats des nombres, alignement, bordures, motifs
et autres ; ce sont 2 exemples de Paste (collage).
Si tu veux faire la copie sans ces formats, avec uniquement
les valeurs, utilises alors les subs Essai2 ou Essai4 : ce sont
2 exemples de PasteSpecial (collage spécial).
----------------------------------------------------------------------------
C'est bien sûr Copy qui fait la copie dans le Presse-papiers.
Et c'est lui qui affiche une bordure de tirets défilants autour de la plage source. 2 solutions pour enlever cette bordure clignottante : manuellement, appui sur la touche Échap ; par le code VBA : Application.CutCopyMode = False.
Je ne t'ai pas tout dit sur Paste et PasteSpecial : tu trouveras plein d'autres informations complémentaires dans l'aide de Visual Basic.
Mais c'est quand même un bon début ! 😉
Voici maintenant le code (à toi de bien l'étudier pour en analyser toutes les différences) :
Option Explicit Sub Essai1() If ActiveSheet.Name <> "Feuil1" Then Exit Sub If [B2] <> 75 Then Exit Sub [B4:D7].Copy ActiveSheet.Paste Worksheets("Feuil2").[B4] Application.CutCopyMode = False End Sub Sub Essai2() If ActiveSheet.Name <> "Feuil1" Then Exit Sub If [B2] <> 75 Then Exit Sub [B4:D7].Copy Worksheets("Feuil2").[B4].PasteSpecial xlPasteValues Application.CutCopyMode = False End Sub Sub Essai3() If ActiveSheet.Name <> "Feuil2" Then Exit Sub With Worksheets("Feuil1") If .[B2] <> 75 Then Exit Sub .[B4:D7].Copy: .Paste [B4] End With Application.CutCopyMode = False End Sub Sub Essai4() If ActiveSheet.Name <> "Feuil2" Then Exit Sub With Worksheets("Feuil1") If .[B2] <> 75 Then Exit Sub .[B4:D7].Copy: [B4].PasteSpecial xlPasteValues End With Application.CutCopyMode = False End Sub
Bonne chance ! 😊