Copie de certaines cellules selon 2 critères
Résolu/Fermé
thealchemyst
Messages postés
18
Date d'inscription
jeudi 11 septembre 2014
Statut
Membre
Dernière intervention
30 mars 2015
-
Modifié par thealchemyst le 13/11/2014 à 12:38
thealchemyst Messages postés 18 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 30 mars 2015 - 16 nov. 2014 à 17:24
thealchemyst Messages postés 18 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 30 mars 2015 - 16 nov. 2014 à 17:24
A voir également:
- Copie de certaines cellules selon 2 critères
- Copie cachée - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Copie écran samsung - Guide
- Fusionner 2 cellules excel - Guide
- Super copie - Télécharger - Gestion de fichiers
9 réponses
f894009
Messages postés
17206
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 novembre 2024
1 711
13 nov. 2014 à 14:25
13 nov. 2014 à 14:25
Bonjour,
Range("A" & i & ", D" & i & ", E" & i & ", F" & i & ", G" & i & ", K" & i).Copy
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
13 nov. 2014 à 16:17
13 nov. 2014 à 16:17
Bonjour le fil, bonjour le forum,
peut-être comme ça :
peut-être comme ça :
Sub testexport() Dim OJ As Object 'déclare la variable OJ (Onglet Janvier 2014) Dim DL As Integer 'déclare la variable DL (Dernière Ligne) Dim OC As Object 'déclare la variable OC (Onglet C) Dim TC As Variant 'déclare la variable TC (Tableau de Cellules) Dim COL As Byte 'déclare la variable COL (COLonne) Dim I As Integer 'déclare la variable I (Incrément) Dim DEST As Range 'déclare la variable DEST (cellule de DESTination) repmois = "janvier" 'définit la variable repmois (j'imagine qu'elle est définie différemment...) Set OJ = Sheets("janvier 2014") 'définit l'onglet OJ Set OC = Sheets("C") 'définit l'onglet OC DL = OJ.Cells(Application.Rows.Count, 5).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 5 (=E) de l'onglet OJ TC = OJ.Range("A3:K" & DL) 'définit le tableau de cellules TC Select Case repmois 'action en fonction de la variable repmois Case "janvier" 'cas mois de janvier COL = 1 'définit la colonne COL Case "février" 'cas mois de février COL = 8 'définit la colonne COL Case "mars" 'cas mois de mars COL = 15 'définit la colonne COL Case "avril" 'cas mois d'avril COL = 22 'définit la colonne COL Case "mai" 'cas mois de mai COL = 29 'définit la colonne COL Case "juin" 'cas mois de juin COL = 36 'définit la colonne COL Case "juillet" 'cas mois de juillet COL = 43 'définit la colonne COL Case "août" 'cas mois d'août COL = 50 'définit la colonne COL Case "septembre" 'cas mois de septembre COL = 57 'définit la colonne COL Case "octobre" 'cas mois d'octobre COL = 64 'définit la colonne COL Case "novembre" 'cas mois de novembre COL = 71 'définit la colonne COL Case "décembre" 'cas mois de décembre COL = 78 'définit la colonne COL End Select 'fin de l'action en fonction de la variable repmois For I = 1 To UBound(TC, 1) 'boucle sur toutes les lignes du tableau TC If TC(I, 5) = "100" And TC(I, 11) = "16" Then 'condition : si la valeur en colonne 5 de la ligne vaut "100" et la valeur de la colonne 11 vaut "16" 'définit la cellule de destination DEST Set DEST = IIf(OC.Cells(1, COL).Value = "", OC.Cells(1, COL), OC.Cells(Application.Rows.Count, COL).Offset(1, 0)) DEST.Value = TC(I, 1) 'récupère á valeur de la ligne colonne 1 (=A) DEST.Offset(0, 1).Value = TC(I, 4) 'récupère á valeur de la ligne colonne 4 (=D) DEST.Offset(0, 2).Value = TC(I, 5) 'récupère á valeur de la ligne colonne 5 (=E) DEST.Offset(0, 3).Value = TC(I, 6) 'récupère á valeur de la ligne colonne 6 (=F) DEST.Offset(0, 4).Value = TC(I, 7) 'récupère á valeur de la ligne colonne 7 (=G) DEST.Offset(0, 5).Value = TC(I, 11) 'récupère á valeur de la ligne colonne 11 (=K) End If 'fin de la condition Next I 'prochaine ligne de la boucle End Sub
thealchemyst
Messages postés
18
Date d'inscription
jeudi 11 septembre 2014
Statut
Membre
Dernière intervention
30 mars 2015
13 nov. 2014 à 17:05
13 nov. 2014 à 17:05
Re-bonjour,
Je voulais apporter encore une précision concernant les valeurs recherchées dans les colonnes "E" et "K" :
En faite, je cherche la valeur "100" dans la colonne "E" de la cellule E3 à E270.
Et "16" pour la colonne "K", aussi de K3 à K270, en remontant vers le haut.
Ce sera plus précis concernant ma demande.
Merci de vos réponses !
Je voulais apporter encore une précision concernant les valeurs recherchées dans les colonnes "E" et "K" :
En faite, je cherche la valeur "100" dans la colonne "E" de la cellule E3 à E270.
Et "16" pour la colonne "K", aussi de K3 à K270, en remontant vers le haut.
Ce sera plus précis concernant ma demande.
Merci de vos réponses !
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
13 nov. 2014 à 17:12
13 nov. 2014 à 17:12
Bonjour le fil, bonjour le forum,
Le code adapté à ta nouvelle requête. Dis-moi au moins si ça te convient que je sache si j'ai bien compris ton problème ou pas...
Le code adapté à ta nouvelle requête. Dis-moi au moins si ça te convient que je sache si j'ai bien compris ton problème ou pas...
Sub testexport() Dim OJ As Object 'déclare la variable OJ (Onglet Janvier 2014) Dim OC As Object 'déclare la variable OC (Onglet C) Dim TC As Variant 'déclare la variable TC (Tableau de Cellules) Dim COL As Byte 'déclare la variable COL (COLonne) Dim I As Integer 'déclare la variable I (Incrément) Dim DEST As Range 'déclare la variable DEST (cellule de DESTination) repmois = "janvier" 'définit la variable repmois (j'imagine qu'elle est définie différemment...) Set OJ = Sheets("janvier 2014") 'définit l'onglet OJ Set OC = Sheets("C") 'définit l'onglet OC DL = OJ.Cells(Application.Rows.Count, 5).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 5 (=E) de l'onglet OJ TC = OJ.Range("A3:K270") 'définit le tableau de cellules TC Select Case repmois 'action en fonction de la variable repmois Case "janvier" 'cas mois de janvier COL = 1 'définit la colonne COL Case "février" 'cas mois de février COL = 8 'définit la colonne COL Case "mars" 'cas mois de mars COL = 15 'définit la colonne COL Case "avril" 'cas mois d'avril COL = 22 'définit la colonne COL Case "mai" 'cas mois de mai COL = 29 'définit la colonne COL Case "juin" 'cas mois de juin COL = 36 'définit la colonne COL Case "juillet" 'cas mois de juillet COL = 43 'définit la colonne COL Case "août" 'cas mois d'août COL = 50 'définit la colonne COL Case "septembre" 'cas mois de septembre COL = 57 'définit la colonne COL Case "octobre" 'cas mois d'octobre COL = 64 'définit la colonne COL Case "novembre" 'cas mois de novembre COL = 71 'définit la colonne COL Case "décembre" 'cas mois de décembre COL = 78 'définit la colonne COL End Select 'fin de l'action en fonction de la variable repmois For I = UBound(TC, 1) To 3 Step -1 'boucle sur toutes les lignes du tableau TC If TC(I, 5) = "100" And TC(I, 11) = "16" Then 'condition : si la valeur en colonne 5 de la ligne vaut "100" et la valeur de la colonne 11 vaut "16" 'définit la cellule de destination DEST Set DEST = IIf(OC.Cells(1, COL).Value = "", OC.Cells(1, COL), OC.Cells(Application.Rows.Count, COL).Offset(1, 0)) DEST.Value = TC(I, 1) 'récupère á valeur de la ligne colonne 1 (=A) DEST.Offset(0, 1).Value = TC(I, 4) 'récupère á valeur de la ligne colonne 4 (=D) DEST.Offset(0, 2).Value = TC(I, 5) 'récupère á valeur de la ligne colonne 5 (=E) DEST.Offset(0, 3).Value = TC(I, 6) 'récupère á valeur de la ligne colonne 6 (=F) DEST.Offset(0, 4).Value = TC(I, 7) 'récupère á valeur de la ligne colonne 7 (=G) DEST.Offset(0, 5).Value = TC(I, 11) 'récupère á valeur de la ligne colonne 11 (=K) End If 'fin de la condition Next I 'prochaine ligne de la boucle End Sub
thealchemyst
Messages postés
18
Date d'inscription
jeudi 11 septembre 2014
Statut
Membre
Dernière intervention
30 mars 2015
13 nov. 2014 à 17:43
13 nov. 2014 à 17:43
Bonjour ThauTheme,
Désolé, j'étais droit entrain de tester ton code :).
J'explore aussi d'autres solutions avec boucle imbriquée et Do While mais sans succès jusqu'à présent...
Eh bien j'ai une erreur d'incompatbilité de type à la ligne 41 sur la comparaison des valeurs de cellule des colonnes "E" et "K" (100 et 16).
Pour essayer de résumer au mieux, si dans ma colonne E j'ai la valeur 100 et que si dans la colonne K j'ai la valeur 16 (si j'ai ces deux conditions remplies).
Alors je dois copier les cellules correspondante (ou l'on trouve les deux conditions remplies) des colonnes A, D, E, F, G, H et K et les coller sur la feuille "C". Sur la feuille "C", la colonne A2 à F2 correspond à "janvier". L'en-tête étant (A1:F1 = "janvier") car j'ai fusionné les cellules.
J'éspère que je suis assez clair. Mais c'est déjà très très sympa de consacrer du temps à mon problème et de m'aider.
Désolé, j'étais droit entrain de tester ton code :).
J'explore aussi d'autres solutions avec boucle imbriquée et Do While mais sans succès jusqu'à présent...
Eh bien j'ai une erreur d'incompatbilité de type à la ligne 41 sur la comparaison des valeurs de cellule des colonnes "E" et "K" (100 et 16).
Pour essayer de résumer au mieux, si dans ma colonne E j'ai la valeur 100 et que si dans la colonne K j'ai la valeur 16 (si j'ai ces deux conditions remplies).
Alors je dois copier les cellules correspondante (ou l'on trouve les deux conditions remplies) des colonnes A, D, E, F, G, H et K et les coller sur la feuille "C". Sur la feuille "C", la colonne A2 à F2 correspond à "janvier". L'en-tête étant (A1:F1 = "janvier") car j'ai fusionné les cellules.
J'éspère que je suis assez clair. Mais c'est déjà très très sympa de consacrer du temps à mon problème et de m'aider.
thealchemyst
Messages postés
18
Date d'inscription
jeudi 11 septembre 2014
Statut
Membre
Dernière intervention
30 mars 2015
13 nov. 2014 à 17:48
13 nov. 2014 à 17:48
Encore une petite précision concernant la feuille de destination "C".
les colonnes H2 à M2 correspondent à "février" (il y a une colonne de séparation pour un meilleur visuel).
"mars" c'est O2 à T2, et ainsi de suite.
les colonnes H2 à M2 correspondent à "février" (il y a une colonne de séparation pour un meilleur visuel).
"mars" c'est O2 à T2, et ainsi de suite.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
14 nov. 2014 à 00:05
14 nov. 2014 à 00:05
Bonsoir le fil, bonsoir le forum,
je pense qu'un petit fichier exemple s'impose...
je pense qu'un petit fichier exemple s'impose...
thealchemyst
Messages postés
18
Date d'inscription
jeudi 11 septembre 2014
Statut
Membre
Dernière intervention
30 mars 2015
14 nov. 2014 à 00:22
14 nov. 2014 à 00:22
Je l'envoi dès que possible. Dans 30min je pense.
thealchemyst
Messages postés
18
Date d'inscription
jeudi 11 septembre 2014
Statut
Membre
Dernière intervention
30 mars 2015
14 nov. 2014 à 02:28
14 nov. 2014 à 02:28
Je n'arrive pas à envoyer le fichier... J'ai un request error...
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
14 nov. 2014 à 09:21
14 nov. 2014 à 09:21
Bonjour le fil, bonjour le forum,
Peut-être en remplaçant la ligne 41 par :
Sinon pour envoyer le fichier, regarde le site cijoint.com
Peut-être en remplaçant la ligne 41 par :
If TC(I, 5) = 100 And TC(I, 11) = 16 Then
Sinon pour envoyer le fichier, regarde le site cijoint.com
thealchemyst
Messages postés
18
Date d'inscription
jeudi 11 septembre 2014
Statut
Membre
Dernière intervention
30 mars 2015
16 nov. 2014 à 17:24
16 nov. 2014 à 17:24
Bonjour ThauTheme,
Je n'ai pas pu envoyer le fichier, j'étais à l'étranger et sans accès à mes fichiers. Mais je n'ai plus besoin de l'envoyer, mon problème est résolu, merci beaucoup.
J'ai juste modifié un peu le code que tu m'as mis à disposition et maintenant tout marche à merveille !
J'ai rajouté à la variable DEST un ".End(xlUp)" comme ceci :
Et j'ai supprimé la variable DL qui faisait le contrôle sur la colonne "E:" étant donné que la recherche se fait directement dans TC(i, 5).
J'ai aussi compris la fonction IIf qui test les valeurs si vrai, on reste sur la cellule vide et si faux on descend d'une cellule.
Je n'ai pas pu envoyer le fichier, j'étais à l'étranger et sans accès à mes fichiers. Mais je n'ai plus besoin de l'envoyer, mon problème est résolu, merci beaucoup.
J'ai juste modifié un peu le code que tu m'as mis à disposition et maintenant tout marche à merveille !
J'ai rajouté à la variable DEST un ".End(xlUp)" comme ceci :
Set DEST = IIf(OC.Cells(1, COL).Value = "", OC.Cells(1, COL), OC.Cells(Application.Rows.Count, COL).End(xlUp).Offset(1, 0))
Et j'ai supprimé la variable DL qui faisait le contrôle sur la colonne "E:" étant donné que la recherche se fait directement dans TC(i, 5).
J'ai aussi compris la fonction IIf qui test les valeurs si vrai, on reste sur la cellule vide et si faux on descend d'une cellule.
13 nov. 2014 à 16:09
Merci beaucoup, je vois ta réponse et je me dis qu'il me fallait une bonne pause...
Un problème de résolu, merci !