Bonjour neactarine78,
Voici les explications :
1) Ici l'onglet [Feuil1] contenant l'ensemble des données
2) Ici l'onglet [Par VBA] sur lequel seront copiées les colonnes souhaitées
Exemple de sélection de colonnes :
(L'insert est une copie de l'onglet [Feuil1] - Les colonnes marquées en orange sont celles qui seront copiées dans l'onglet [Par VBA])
Autre exemple...
Cliquer sur ce bouton permet de lancer le transfert
Voici le résultat du transfert :
Voici le résultat avec un changement de colonnes (il faut cliquer de nouveau sur le bouton pour réaliser le nouveau transfert, après le changement des colonnes sélectionnées) :
Attention les noms de colonnes sélectionnées dans l'onglet [Par VBA] doivent être strictement identiques à ceux de l'onglet [Feuil1] !
Comment adapter à ton fichier réel... ?
- Il y a dans le code, 2 fonctions qui permettent de délimiter respectivement la dernière ligne et la dernière colonne d'une zone :
- Dans la fonction LastRow :
- "wshAct" est l'onglet sur lequel la fonction devra fonctionner
- "colRef" est la colonne de référence. Elle permet de savoir où est située la 1ère colonne significative. Depuis cette colonne la fonction retrouve grâce à ".End(xlUp).Row" numéro de ligne
- "rowMin" est la ligne sur laquelle se trouve le début des données
- Lorsque la fonction fait son travail, elle remonte depuis la dernière ligne d'Excel (.Rows.Count) jusqu'à la ligne de début des données (rowMin), puis elle prend le maximum des 2 valeurs trouvées (au cas où le fichier serait vide)
- Dans la fonction LastCol :
- "wshAct" idem "LastRow"
- "rowRef" est la ligne de référence. Elle permet de déterminer la ligne à prendre en compte pour compter les colonnes. Idéalement, celle de la ligne d'entête
- "colMin" est la colonne minimum à prendre en compte
Adaptation :Il faut modifier certaines zones de code, pour indiquer où se trouvent les données d'origine :
- Dans la zone 1 il faut changer
- "Cells(3,4)" en fonction de la première ligne et colonne des données dans l'onglet [Feuil1]
- Puis les informations concernant les fonctions "LastRow" et "LastCol"
- Dans la zone 2
- Pour la ligne avec "Range(.Cells(4,4) ... ))).ClearContents" il faut changer le 4 et 4 en fonction de la ligne et colonne sur lesquelles tu veux transférer les données. Attention la ligne est bien celle des données pas celle de l'entête (zone orange dans les figures ci-dessus - qui doit toujours rester présente)
- Pour la ligne avec "tabDest=Range( ...)))" il faut changer le 3 et le 4. La ligne 3 est la ligne d'entête, qu'il faut prendre en compte ! Et changer les valeurs données aux fonctions "LastRow" et "LastCol"
Puis en dernier lieu, il faut adapter cette dernière zone de code :
- Changer le "3,4" qui doit être le même que celui indiqué plus haut dans le code à la ligne "tabDest=Range( ...)))"
Voilà, en espérant que les explications seront suffisantes pour adapter au vrai fichier de travail !