Copier coller si...
Lils_Bis
Messages postés
65
Statut
Membre
-
ThauTheme Messages postés 1564 Statut Membre -
ThauTheme Messages postés 1564 Statut Membre -
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 - Accueil - Informatique
- Copier coller pdf - Guide
- Style d'écriture a copier coller - Guide
- Symbole clavier copier coller - Guide
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