Travail sur des tableaux

Bonjour,

j'ai un problème d'extraction.

j'ai 3 onglets

- BASE c'est ma base de données totale qui évolue tout les jours.

- export c'est la base à traiter sur le graphique

- graphique c'est l'endroit ou j'affiche mon graphique

j'ai dans la feuille base en colonne "L" la catégorie de mes véhicules (1000-2000-3000)

je veux quand je met par exemple 2000 en "C3" de la feuille graphique que la macro transfert les lignes avec 2000 dans la colonne "L" de la feuille base dans la feuille export à partir de la ligne 4.

avec un bouton pour déclencher la macro sur la feuille graphique.

merci pour votre aide.

Bonjour danval,

Ci-joint une proposition avec les conditions souhaitées.

Bonsoir le fil, bonsoir le forum,

Une proposition avec l'événementielle Change ci-dessous :

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim OB As Worksheet 'déclare la variable OB (Onglet Base)
Dim OE As Worksheet 'déclare la variable OE (Onglet Export)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)

If Target.Address <> "$C$2" Then Exit Sub ' si le changement a lieu ailleurs qu'en C2, sort de la procédure
Set OB = Worksheets("BASE") 'définit l'onglet OB
Set OE = Worksheets("Export") 'définit l'onglet OE
If Target.Value = "" Then Exit Sub 'si C2 est effacée, sort de la procédure
TV = OB.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 1 To UBound(TV, 1) ' boucle 1 : sur toutes les lignes I du tableau des valeurs TV
    If TV(I, 12) = Target.Value Then 'condition : si la donnée ligne I colonne 12 de TV est égale à la valeur de la cellule modifiée (C2)
        K = K + 1 'incrémente K
        ReDim Preserve TL(1 To 12, 1 To K) ' redimensionne le tabeau de lignes TL (12 lignes, K colonnes)
        For J = 1 To UBound(TV, 2) 'boucle 2 : sur toutes les colonnes J du tableau des valeurs TV
            TL(J, K) = TV(I, J) 'récupère dans la ligne J de TL la valeur de la donnéee colonne J de TV (=> Transposition)
        Next J 'prochaine colonne de la boucle 2
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle 1
If K > 0 Then ' condition : si K est supérieure à zéro
    OE.Range("A1").CurrentRegion.Offset(3, 0).ClearContents 'efface les anciennes données de l'onglet OE
    OE.Range("A4").Resize(K, 12).Value = Application.Transpose(TL) 'renvoie le tableau TL transposé dans A4 de l'onglet OE
End If ' fin de la condition
End Sub

à placer dans le composant Feuil4(GRAPHIQUE)...

Bonjour,

Un immense merci pour ces deux propositions qui fonctionnent à merveille.

Rechercher des sujets similaires à "travail tableaux"