Copier coller si...
Lils_Bis
Messages postés
57
Date d'inscription
Statut
Membre
Dernière intervention
-
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
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 ! :)
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:
- Copier coller si...
- Historique copier coller - Guide
- Copier coller pdf - Guide
- Copier-coller - Accueil - Informatique
- Style d'écriture a copier coller - Guide
- Arobase copier coller - Forum Windows 10
2 réponses
Bonjour Lils, bonjour le forum,
Le code commenté (à adapter) ci-dessous devrait fonctionner :
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
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 :
Avec comme message d'erreur, le suivant : "ERREUR D'EXECUTION '13': Incompatibilité de type"
Vois-tu d'où cela peut provenir ?
Merci encore à toi !
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