Copier / coller colonnes par rapport date

ABDELHAK

XLDnaute Occasionnel
Bonjour le forum,

Enfin, je suis heureux de pouvoir me reconnecter correctement avec vous. Je suis toujours aussi doué en VBA qu’un boulanger dans un laboratoire de recherche.
Trèves de plaisanteries, voici le nouveau problème que j’aimerais résoudre.
J’ai un fichier avec une feuille ( RECAP ) et une feuille ( C_N ).

Dans la feuille ( C_N ), il y a 27 tableaux au total (ce qui est important les 1ières lignes de chaque tableaux) dont voici les numéros de lignes :
TAB 1 = LIGNE 5
TAB 2 = LIGNE 45
TAB 3 = LIGNE 85
TAB 4 = LIGNE 125
TAB 5 = LIGNE 165
TAB 6 = LIGNE 205
TAB 7 = LIGNE 245
TAB 8 = LIGNE 285
TAB 9 = LIGNE 325
TAB 10 = LIGNE 365
TAB 11 = LIGNE 405
TAB 12 = LIGNE 445
TAB 13 = LIGNE 485
TAB 14 = LIGNE 525
TAB 15 = LIGNE 565
TAB 16 = LIGNE 605
TAB 17 = LIGNE 645
TAB 18 = LIGNE 685
TAB 19 = LIGNE 725
TAB 20 = LIGNE 765
TAB 21 = LIGNE 805
TAB 22 = LIGNE 845
TAB 23 = LIGNE 885
TAB 24 = LIGNE 925
TAB 25 = LIGNE 965
TAB 26 = LIGNE 1005
TAB 27 = LIGNE 1045
J’aimerais que la macro :

1) Cherche la 1ière cellule à fond vert et la dernière cellule à fond vert de la 1ière ligne du 1ier tableau.
Si la 1ière ligne répond à cette condition, alors :
1) lire la ligne juste au-dessus contenant la date
2) aller à la 1ière ligne de la feuille ( RECAP )
3) trouver la date correspondante
4) effectuer une sélection de toute la colonne (uniquement sélectionner)

2) Cherche la 1ière cellule à fond vert et la dernière cellule à fond vert de la 1ière ligne du 2ième tableau.
Si la 1ière ligne répond à cette condition, alors :
5) lire la ligne juste au-dessus contenant la date
6) aller à la 1ière ligne de la feuille ( RECAP )
7) trouver la date correspondante
8) effectuer une sélection de toute la colonne (uniquement sélectionner)

3) Cherche la 1ière cellule à fond vert et la dernière cellule à fond vert de la 1ière ligne du 3ième tableau.
Si la 1ière ligne répond à cette condition, alors :
9) lire la ligne juste au-dessus contenant la date
10) aller à la 1ière ligne de la feuille ( RECAP )
11) trouver la date correspondante
12) effectuer une sélection de toute la colonne (uniquement sélectionner)

Et ainsi de suite pour les 27 1ières lignes des 27 tableaux

Je joins un fichier qui j’espère sera plus explicite

Amicalement vôtre

ABDELHAK
 

Pièces jointes

  • C_N_TEST.xls
    275.5 KB · Affichages: 42

ABDELHAK

XLDnaute Occasionnel
Re : Copier / coller colonnes par rapport date

Si la 1ière ligne de la feuille ( C_N ) répond à cette condition, alors :
1) lire la ligne se trouvant juste au-dessus contenant la date
2) aller à la 1ière ligne de la feuille ( RECAP )
3) trouver la date correspondante
4) effectuer une sélection de toute la colonne (uniquement sélectionner)

le fichier joint est plus explicite

Merci d'avoir réagit aussi vite

ABDELHAK
 

vgendron

XLDnaute Barbatruc
Re : Copier / coller colonnes par rapport date

euh non.. désolé, ce n'est pas plus explicite..
je ne vois toujours pas la condition...

d'après ce que tu dis..
dans l'onglet C_N
TOUTES les premières lignes (5 45 85 125 etc etc..) possèdent des cellules à fond vert..
donc.. pour chaque tableau, je regarde la date en ligne 1-41-81-121 etc etc)
et donc. dans l'onglet récap. je sélectionne TOUTES les colonnes...

à mon avis. c'est pas vraiment ce que tu as en tete....
donc. je réitère..
c'est quoi la condition? dans quel cas, il faut (ou pas) sélectionner la colonne?
 

ABDELHAK

XLDnaute Occasionnel
Re : Copier / coller colonnes par rapport date

BONJOUR

la condition est si la 1ière cellule à fond vert et la dernière cellule à fond vert de la 1ière ligne du 1ier tableau.
et si la 1ière ligne répond à cette condition, alors :
1) lire la ligne se trouvant juste au-dessus contenant la date de la feuille ( C_N )
2) aller à la 1ière ligne de la feuille ( RECAP )
3) trouver la date correspondante de la 1ière ligne de la feuille ( RECAP )
4) ensuite sélectionner toute la colonne correspondant à cette date (il faut uniquement sélectionner la colonne et rien d'autre)

je vous envoie une nouvelle pièce jointe légèrement modifier

en vous remerciant

Amicalement vôtre

Abdelhak
 

Pièces jointes

  • C_N_TEST_2.xls
    279 KB · Affichages: 42

vgendron

XLDnaute Barbatruc
Re : Copier / coller colonnes par rapport date

bon. on progresse.. quoique....;-)
avant d'attaquer la moindre ligne de code, je voudrais etre sur de bien comprendre..

sur la première ligne de chaque tableau
si la première cellule ET la dernière cellule sont en fond vert alors, on fait la suite.. chercher la date et sélectionner la bonne colonne..

dans ton fichier
pour le tableau 1
la première ligne, c'est la ligne 5 d'Excel (numérotée1 par toi en colonne A d'excel)
la première cellule, c'est la cellule B5 d'Excel (numérotée A1 par toi)
cette première cellule contient une valeur 52

elle est bien en fond vert

pour la dernière cellule, c'est la cellule Excel FE5 (numérotée par toi FD1): n'est PAS en fond vert et ne contient rien.
or. d'après ton exemple, dans l'onglet Récap, tu sélectionnes la colonne du 02/01/2002..

est ce que le fond vert la dernière cellule est réellement important??
 

ABDELHAK

XLDnaute Occasionnel
Re : Copier / coller colonnes par rapport date

Bonjour vgendron,

En effet, sur la première ligne de chaque tableau si la première cellule ET la dernière cellule sont en fond vert alors, on fait la suite.. chercher la date et sélectionner la bonne colonne..
La macro doit chercher et reconnaitre seulement 2 cellules à fond vert la première cellule et la dernière cellule

dans mon fichier pour le tableau 1 la première ligne, c'est la ligne 5 d'Excel (numérotée1 par moi en colonne A d'excel)
la première cellule, c'est la cellule B5 d'Excel (numérotée A1 par moi)
cette première cellule contient une valeur 52 elle est bien en fond vert

pour la dernière cellule, c'est la cellule Excel CZ5 (numérotée par moi CY1) elle est en fond vert et elle contient une valeur 40.
Dès que la première cellule et la dernière cellule à fond vert de la première ligne ont été reconnues on fait le reste

Est ce que le fond vert la dernière cellule est réellement important?? Oui

En vous remerciant de m’accorder votre attention

Amicalement vôtre

Abdelhak
 

vgendron

XLDnaute Barbatruc
Re : Copier / coller colonnes par rapport date

Bon.. j'abandonne...
j'ai pas de réponse claire à mes questions.. et suis pas d'humeur aujourd'hui à jouer aux devinettes

il va falloir apprendre à etre clair et précis:

tu as 27 tableaux de 10 lignes (numérotées de 1 à 10 ) sur 160 Colonnes (numérotées de A à FD - Excel B à FE))

La première ligne de chaque tableau démarre en ligne Excel 5 -45 -85 etc etc

Dans CHAQUE tableau: la PREMIERE cellule de la première ligne est en B5 - B45 - B50 etc
et la DERNIERE cellule de la première ligne est en FE5 - FE45 - FE85 etc etc

EXEMPLE: tableau 1:
PREMIERE LIGNE - Première cellule: B5 - contient la valeur 52 - ET est en fond Vert
PREMIERE LIGNE - Dernière cellule FE5 -ne contient RIEN - ET n'est pas en fond vert

EXEMPLE Tableau 2:
PREMIERE LIGNE - Première cellule: B45 - contient la valeur 52 - ET est en fond Vert
PREMIERE LIGNE - Dernière cellule FE45 -ne contient RIEN - ET n'est pas en fond vert

EXEMPLE Tableau 3:
PREMIERE LIGNE - Première cellule: B85 - contient la valeur 52 - ET n'est PAS en fond Vert
PREMIERE LIGNE - Dernière cellule FE45 -ne contient RIEN - ET n'est pas en fond vert

TOI ce que tu sembles vouloir sans savoir l'expliquer correctement; c'est pour chaque tableau la première cellule QUI (voila la condition) a un fond Vert, ainsi que la Dernière cellule QUI (la meme condition) a un fond vert

donc
tableau 1: B5 (valeur 52) ET CZ5 (valeur 40)
tableau 2: B45 (valeur 52) ET DA45 (valeur 40)
tableau 3: D85 (valeur 76) ET CE85 (valeur 21)

oui et après. une fois que tu identifies ces deux valeurs pour TOUS les tableaux. tu sélectionnes les dates correspondantes dans RECAP. autrement dit, tu sélectionnes tout...bah oui. TOUS tes tableaux ont des valeurs sur fond vert... c'est quoi l'intérêt ??
 

ABDELHAK

XLDnaute Occasionnel
Re : Copier / coller colonnes par rapport date

Bonjour vgendron,

Désolé de répondre un peu tard et merci. La grande difficulté est justement d’être clair et précis.

J’ai 27 tableaux de 10 lignes (numérotées de 1 à 10 ) sur 160 Colonnes (numérotées de A à FD - Excel B à FE))

La première ligne de chaque tableau démarre en ligne Excel 5 -45 -85 etc etc

Dans CHAQUE tableau: la PREMIERE cellule de la première ligne est en B5 - B45 – B85 etc
et la DERNIERE cellule de la première ligne est en FE5 - FE45 - FE85 etc etc

EXEMPLE: tableau 1:
PREMIERE LIGNE - Première cellule: B5 - contient la valeur 52 - ET est en fond Vert
PREMIERE LIGNE - Dernière cellule FE5 -ne contient RIEN - ET n'est pas en fond vert

EXEMPLE Tableau 2:
PREMIERE LIGNE - Première cellule: B45 - contient la valeur 52 - ET est en fond Vert
PREMIERE LIGNE - Dernière cellule FE45 -ne contient RIEN - ET n'est pas en fond vert

EXEMPLE Tableau 3:
PREMIERE LIGNE - Première cellule: B85 - contient la valeur 52 - ET n'est PAS en fond Vert
PREMIERE LIGNE - Dernière cellule FE45 -ne contient RIEN - ET n'est pas en fond vert

TOI ce que tu sembles vouloir sans savoir l'expliquer correctement; c'est pour chaque tableau la première cellule QUI (voila la condition) a un fond Vert, ainsi que la Dernière cellule QUI (la meme condition) a un fond vert

donc
tableau 1: B5 (valeur 52) ET CZ5 (valeur 40) rentre dans la condition
tableau 2: B45 (valeur 52) ET DA45 (valeur 40) rentre dans la condition
tableau 3: D85 (valeur 76) ET CE85 (valeur 21) en effet ils sont à fond vert mais ne rentre pas dans la condition parce que B85 (valeur 52) n’est pas à fond vert ET DB85 (valeur 40) n’est pas à fond vert
tableau 4: E125 (valeur 76) ET BT125 (valeur 37) en effet ils sont à fond vert mais ne rentre pas dans la condition parce que B125 (valeur 52) n’est pas à fond vert ET DB125 (valeur 40) n’est pas à fond vert .

En effet maintenant j’ai compris pourquoi vous ne compreniez pas ce que je voulais.
Je vais essayer de reformuler la condition plus clairement
La macro doit lire la 1ière cellule ici (B5, B45, B85, B125,…) et la dernière cellule (CZ5, DA45, DB85, DB125, …) qu’elles soient ou non à fond vert.
Ensuite la macro vérifie si elles sont à fond vert.
Si elles sont à fond vert alors chercher la date correspondante dans sheet (RECAP) et sélectionner toute la colonne.
Si elles ne le sont pas, il ne faut rien faire.

J’espère avoir été plus claire.

En vous remerciant chaleureusement pour votre patience.

Amicalement vôtre

ABDELHAK
 

vgendron

XLDnaute Barbatruc
Re : Copier / coller colonnes par rapport date

Bon.. j'avais commencé quelque chose qu'il me semble facile d'adapter. mais ca.. c'était au taf... et la. j'y suis pas. et donc, je n'utilise pas le meme pc. et comme j'ai pas envie de tout refaire... va falloir attendre demain si tu veux bien pour que je reparte sur le meme fichier.
 

vgendron

XLDnaute Barbatruc
Re : Copier / coller colonnes par rapport date

Bonjour,

voici le code à placer dans un module VBA

Code:
Sub selection()

NbTableau = 27
LignePremierTableau = 5
EspaceEntreTab = 40
FondSelection = 3 'rouge

'pour etre sur de lancer la macro à partir de la bonne feuille
Sheets("C_N").Activate

'attention.. qu'il y ait 27 tableaux ou pas, il fera 27 fois la boucle
For i = 1 To NbTableau
    ' si la première cellule (toujours A1) contenant une valeur est en fond vert,
    ' sinon, utiliser le cells(numLigne,2).end(xlToRight) comme pour la recherche de la dernière cellule
    If Cells((i - 1) * EspaceEntreTab + LignePremierTableau, 2).Interior.ColorIndex = 4 Then
        'si la dernière cellule contenant une valeur est en fond vert
        'note; si la première cellule n'est pas en fond vert. pas la peine de tester la dernière
        'note2: on peut remplacer les deux if imbriqués par un si (première cellule=vert) ET (dernière cellule=vert)
        If Cells((i - 1) * EspaceEntreTab + LignePremierTableau, 162).End(xlToLeft).Interior.ColorIndex = 4 Then
            'on récupère la date
            DateToColor = Cells((i - 1) * EspaceEntreTab + LignePremierTableau, 2).Offset(-4, 0)
            'dans la feuille récap, on trouve la colonne et on colorie en fond FondSelection
            With Sheets("RECAP")
                Set c = .Range("1:1").Find(DateToColor)
                If Not c Is Nothing Then
                    'au lieu de colorier, on peut sélectionner simplement.. comme demandé. sauf que je ne sais pas comment faire une sélection multiple...
                    .Range(.Cells(1, c.Column), .Cells(122, c.Column)).Interior.ColorIndex = FondSelection
                End If
            End With
        End If
    End If
Next i

End Sub
 

ABDELHAK

XLDnaute Occasionnel
Re : Copier / coller colonnes par rapport date

Bonjour vgendron

La macro que vous avez réalisée tourne à merveille. C’est exactement ce que je voulais. C’est tout simplement incroyable avec quelle « facilité » vous maîtriser ce langage qui ne m’est pas familier du tout.
Je vous admire et vous envie à la fois.
1000 mercis et bravo.
Néanmoins, y a-t-il moyen d’enlever le fond rouge et garder l’aspect original (cellules ayant la valeur 1 à fond vert) et de uniquement sélectionner la ou les colonnes ainsi je ferai le reste « manuellement » exécuter un copier coller vers un autre fichier.

Amicalement vôtre

ABDELHAK

N.B. : SI JE GAGNE AU KENO JE NE ME CONTENTERAI PAS DE VOUS AVERTIR BIEN EVIDEMMENT. MAIS SI « MA VISION » S’AVERE EXACTE VOUS AUREZ LA POSSIBILITE DE DEVENIR RICHE AUSSI ETANT DONNE QUE C’EST VIA LE FORUM QUE J’AI PU VISUALISER CELLE-CI SANS VOTRE AIDE A TOUS JE N’Y SERAIS JAMAIS ARRIVE.
 

vgendron

XLDnaute Barbatruc
Re : Copier / coller colonnes par rapport date

Re..

Relis bien les commentaires que j'ai mis dans la macro..
à l'endroit où je colore la colonne..
mon problème est bien de créer une zone de sélection multiple..
car si je sélectionne la colonne (et seulement celle qui est en cour) au fur et à mesure. et bien. à la fin de la macro. tu n'auras qu'une colonne sélectionnée...

je pense qu'il faut passer avec la fonction Union.. mais. ca coince.
je pense à cause du "with sheetst("....."). et les .range...
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal