Copier coller si...

Fermé
Lils_Bis Messages postés 57 Date d'inscription lundi 4 avril 2016 Statut Membre Dernière intervention 28 décembre 2020 - Modifié par Lils_Bis le 24/05/2016 à 11:12
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 31 mai 2016 à 11:42
Bonjour,
Plusieurs jours que je me penche sur un problème que je n'arrive pas à résoudre et c'est pour ça que je me tourne vers vous en espérant qu'un de vous puisse me venir en aide ☺.

Voilà mon problème. J'ai un nombre de colonnes qui peut varier (tout comme mon nombre de ligne) selon les fichiers. Ma deuxième ligne comporte que pour chaque colonne oui ou non. Je voudrais copier toutes les colonnes où l'on retrouve oui en deuxième ligne. Et une fois cette sélection faite, je souhaiterais les coller dans une feuille "oui" (que j'ai déjà créée).

Je pense pas que ça soit bien compliqué mais je bloque totalement !

En vous remerciant par avance tou(te)s ! :)


A voir également:

2 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
24 mai 2016 à 12:05
Bonjour Lils, bonjour le forum,

Le code commenté (à adapter) ci-dessous devrait fonctionner :

Sub Macro1()
Dim D  As Worksheet 'déclare la varaible D (onglet Données)
Dim O  As Worksheet 'déclare la varaible O (onglet Oui)
Dim TV As Variant 'déclare la varaible TV (Tableau des Variables)
Dim I As Integer 'déclare la varaible I (Incrément)
Dim DEST As Range 'déclare la varaible DEST (cellule de DESTination)

Set D = Sheets("Données") 'définit l'onglet D (à adapter à ton cas)
Set O = Sheets("oui") 'définit l'onglet O
O.Cells.ClearContents 'efface d'éventuelles anciennes données
TV = D.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 1 To UBound(TV, 2) 'boucle sur toutes les colonnes I du tableau des valeurs TV
    If TV(2, I) = "oui" Then 'condition : si la valeur en ligne 2 de la colonne I est égale à 2
        'définit la cellule de destination DEST (A1 si A1 est vide, sinon la premiere cellule vide de la ligne 1 de l'onglet "oui")
        Set DEST = IIf(O.Range("A1") = "", O.Range("A1"), O.Cells(1, Application.Columns.Count).End(xlToLeft).Offset(0, 1))
        DEST.Resize(UBound(TV, 1), 1).Value = Application.Index(TV, , I) 'revoie la colonne dans DEST
    End If 'fin de la condition
Next I 'prochaine colonne de la boucle
End Sub

0
Lils_Bis Messages postés 57 Date d'inscription lundi 4 avril 2016 Statut Membre Dernière intervention 28 décembre 2020
30 mai 2016 à 15:39
Bonjour ThauTheme,
Merci pour ta solution, ton temps et désolé de ma réponse tardive...

Je l'ai testé après quelque modifications mais ça ne fonctionne pas.
Ca bloque à la ligne suivante :

DEST.Resize(UBound(TV, 1), 1).Value = Application.Index(TV, , I) 'renvoie la colonne dans DEST


Avec comme message d'erreur, le suivant : "ERREUR D'EXECUTION '13': Incompatibilité de type"

Vois-tu d'où cela peut provenir ?

Merci encore à toi !
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
31 mai 2016 à 11:42
Bonjour Lils, bonjour le forum,

Sans fichier difficile de trouver ce qui ne va pas. Regarde la pièce jointe qui fonctionne avec le code proposé. Clique sur le bouton Envoyer...

https://www.cjoint.com/c/FEFjQGkh68I
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
30 mai 2016 à 15:55
Bonjour Lils, bonjour le forum,

Comme tu n'as pas précisé le nom de l'onglet qui contenait les données je l'ai appelé Données dans le code et j'ai mis entre parenthèses qu'il te fallait adapter ce nom à ton cas. L'as-tu fait ?
0
Lils_Bis Messages postés 57 Date d'inscription lundi 4 avril 2016 Statut Membre Dernière intervention 28 décembre 2020
30 mai 2016 à 15:58
Oui, j'ai bien modifié comme tes commentaires le spécifiaient mais rien à faire... J'ai cherché où était l'erreur mais je sèche totalement sur ce coup ! Vois-tu autre chose ?
0

Discussions similaires