Extraction de donné - VBA ou INDEX/EQUIV?

Hello,

J'ai un taff d'école ou j'ai tout un tableau sur une communication dans un onglet

Dans 2 onglets differents, je dois extraire une seul fois les lignes du tableau principal selon 2 critères qui sont dans 2 colonnes(type envoyé et le destinataire)

Le problèeme c'est que avec mon VBA, il n'extrait que les 2 premieres lignes et s'arrete, et avec le EQUIV il m'extrait la premiere ligne en boucle et ne copie que le numero de la ligne et pas le contenu...

Qqun aurait une idée?

Merci

Bonjour et bienvenue sur le forum

Joins ton fichier et on verra ce qu'on peut faire....

Bye !

Voila ci joint le fichier en version raccourcie

Je veux créer une macro (ou une par feuille plutot c'est plus simple)

Dans la feuille zebre (meme format que la feuille de base) => regarde dans PlanComm et prendre et copier toutes les lignes (en entier) qui continennet le mot Zebre dans la colonne "contrepartie".

Les copier dans l'ordre précis qu'elle aparaissent. (A chaque fois que je clique sur le bouton ca doit rajouter les lignes que j'aurais rajouté dans l'onglet principal (surement un clearcontent et remettre la macro sur tout)

Faier pareil sur l'onglet Poney..

---- Les feuilles Poney et Zebre sont deja pré-tablées

Le problème c'est que je n'arrive pas à copier toutes les lignes, mon VBA s'arrete à la 3eme...

Question annexe : Est-il possible de créer une bordure qui s'affiche automatique a chaque fois que la date d'envoi change de mois?

Genre dans les onglets je rajoute le mois, qui est automatiquement renvoyé via la macro precedente, mais a chaque fois qu'on change de mois dans l'ordre croissant, cela dessine une bordure excel?

Merci bcp de votre aide!

15excelpratique.xlsm (28.82 Ko)

Où ça mon Dieu ?

Je ne vois rien !

re-modif j'avais oublié le fichier ahah merci d'avance

Un essai de mise à jour automatique.

Pour la question annexe, il me faudrait un exemple de ce que tu souhaites...

Bye !

Je dis bravo en si peu de temps, comment fais-tu pour la macro à rafraichissement automatique?

Ou est le code source de ta macro?

Pour l'exemple précis

J'ai 2 questions en fait

J'aimerais que selon la date, cela m'affiche le Trimestre correspondant

ex : 21/01/2015 => cellule d'a coté Q1 2017

21/04/2015 => cellule d'a coté Q2 2017

etc

Mais ma formule : si(et(dateval><);(si

Elle me renvoi erreur a partir de l'execution du 2eme si

Pour la question des dates, en fait j'aimerais dessiner une bordure automatiquement a chaque fin de trimestre


comment je vais modifier ta macro auto si je veux rajouter des colonnes?

Merci

Neophite77 a écrit :

Ou est le code source de ta macro?

C'est une macro événementielle qui est attachée au classeur (ThisWorkbook)

Tu peux la voir en tapant simultanément sur les touches Alt et F11

J'aimerais que selon la date, cela m'affiche le Trimestre correspondant

Une mise en forme conditionnelle suffit, tout comme pour :

une bordure automatiquement a chaque fin de trimestre

Option Explicit

Dim fp As Worksheet, nom$, i&, lgn&

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

If Sh.Name = "PlanComm" Then Exit Sub

Set fp = Sheets("PlanComm")

Sh.Range("A3").CurrentRegion.Offset(2, 0).ClearContents

nom = ActiveSheet.Name

For i = 3 To fp.Range("D" & Rows.Count).End(xlUp).Row

If fp.Range("D" & i) = nom Then

lgn = Sh.Range("D" & Rows.Count).End(xlUp)(2).Row

fp.Range("A" & i & ":H" & i).Copy Sh.Range("A" & lgn)

End If

Next i

End Sub

Je ne vois pas ou est la variable de "Zebre ou Poney" ?

J'ai des connaissances mais la je bloque

Neophite77 a écrit :

Je ne vois pas ou est la variable de "Zebre ou Poney" ?

Il s'agit de la variable "nom" qui prend le nom des différentes feuilles du classeur :

nom = ActiveSheet.Name

OK?

Bye !

Fabuleux j'ai compris, c'est pas mal sauf si j'ai un deuxieme champs qui genere le même mot!

Merci

Mais Excel ne te permettra pas d'avoir deux feuilles qui ont le même nom, alors...

Bye !

Une dernière petite question, est-il possible de faire le

Sh.Range("A3").CurrentRegion.Offset(2, 0).ClearContents

seulement sur la partie delimité du tableau, car a droite je voudrais mettre un graph mais il s'efface a chaque execution de macro..

Merci

et une deuxieme question, quelle partie de la formule permet de copier a partir de la ligne?

Je m'explique, j'ai rajouté 3 lignes de A à C pour la presentation, + les 2 lignes deja présente.

Maintenant quand la macro s'execute, elle efface tout...

Ci-joint le fichier, j'ai modifié le Explicit de la macro pour qu'elle ne s'execute pas

Merci encore de votre aide

Neophite77 a écrit :

j'ai rajouté 3 lignes

3 lignes ou 13 colonnnes ?

Nouvelle version à tester.

Bye !

Bon j'ai rien à dire, tu es vraiment fort en excel

J'avais essayé la structuration semblabe mais il me manquait le Application.max que je connaissais pas!!

Merci

Je fini de mon coté voir si j'ai pas une derniere question

Me revoila GMB!

J'ai une petite question, j'ai compris ta MFC sur le changement de trimestre, mais je sais qu'on ne peut pas mettre bordure "gras" via les MFC (va savoir pourquoi...)

J'ai donc fait une macro VBA.

A savoir, que la donnée T1-T2-T3-T4 est dans la colone I, et que mes données commencent à la ligne 5.

Sub Macro_Trim()

Dim Derligne As Long

Dim i As Long

Dim J As Long

Dim k As Long

Derligne = Range("I" & Application.Rows.Count).End(xlUp).Row

For i = 5 To Derligne

If Cells(i, 3) <> Cells(i + 1, 3) Then

With Range("A" & i & ":" & "U" & i).Borders(xlEdgeBottom)

.LineStyle = xlContinuous

.Weight = xlThick

End With

Else

Range("D" & i & ":" & "M" & i).Borders(xlEdgeBottom).LineStyle = xlContinuous

End If

Next i

End Sub

Qu'est ce que j'ai loupé?


Et quand je change le Cells (i, 1) cela me met la bordure partout, je crois que j'ai un problème de IF

Essaie ça :

Sub Macro_Trim()

    Dim Derligne As Long
    Dim i As Long
    Dim J As Long
    Dim k As Long
    Derligne = Range("Q" & Rows.Count).End(xlUp).Row
    For i = 5 To Derligne
        If Cells(i, 19) <> Cells(i + 1, 19) Then
            With Range("A" & i & ":" & "U" & i).Borders(xlEdgeBottom)
                .LineStyle = xlContinuous
                .Weight = xlThick
            End With
        Else
            Range("D" & i & ":" & "M" & i).Borders(xlEdgeBottom).LineStyle = xlContinuous
        End If
    Next i
End Sub

Bye !

Rien ne se produit...

Bonjour

Pour que la macro donne un résultat visible, il te faut enlever les mises en forme conditionnelles dans ton tableau.

Pour aller plus vite, tu sélectionnes une ligne vide sans mise en forme, tu fais copier, puis tu sélectionnes toutes les lignes de ton tableau et tu fais un collage spécial format.*

OK ?

Bye !

Rechercher des sujets similaires à "extraction donne vba index equiv"