Copie de certaines cellules selon 2 critères
Résolu
thealchemyst
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
thealchemyst Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
thealchemyst Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Copie de certaines cellules selon 2 critères
- Supercopier 2 - Télécharger - Gestion de fichiers
- Copie cachée - Guide
- Copie écran samsung - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Fusionner 2 cellules excel - Guide
9 réponses
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
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 !
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
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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.
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 !