Séléction (de colonne discontinu) et "copie" de données avec la fonction range

piwwwa

XLDnaute Junior
Bonjour cher ami excelien,

Je viens vers vous car je rencontre un problème dans ma sélection et « recopie » de donnée.
Ma macro est la suivante :
Code:
Private Sub CommandButton22_Click()
Dim tableau()
i = 0
If TextBox800.Text <> "" And TextBox801.Text <> "" Then

    With Sheets("Base")
        For Each c In .Range("N2:N" & .Range("N65000").End(xlUp).Row)
            If c.Value >= CDate(TextBox800.Text) And c.Value <= CDate(TextBox801.Text) Then
                ReDim Preserve tableau(i + 1)
                tableau(i) = .Range("g2:h65536, M:M, c2:c65536").Value
                i = i + 1
            End If
        Next c
    End With
    With Sheets("Logistique")
        .Range("A6:AI61000").Clear
        For i = 0 To UBound(tableau)
            .Range("A" & i + 6 & ":I" & i + 6) = tableau(i)
        Next i
    End With
End If
Me.Hide
End Sub

Mon problème est dans la ligne : tableau(i) = .Range("g2:h65536, M:M, c2:c65536").Value
Ma colonne G et H sont bien rangé, mais pas les suivantes (et j’en est encore d’autre à ajouter).

Merci d’avance pour votre aide éclairée.
 

piwwwa

XLDnaute Junior
Re : Séléction (de colonne discontinu) et "copie" de données avec la fonction range

Je viens de m’apercevoir que j’avais demandé un coup de main, sans même avoir posé un extrait de fichier, voilà une bêtise de réparée :

(c) CJoint.com, 2012

Et merci d’avance à tous les experts excelien.
 

Paf

XLDnaute Barbatruc
Re : Séléction (de colonne discontinu) et "copie" de données avec la fonction range

Bonjour
avec tableau(i) = .Range("g2:h65536, M:M, c2:c65536").Value on charge chaque 'indice' du tableau tableau avec des plages qui sont des colonnes entières ! alors que, si j'ai bien compris, on ne veut récupérer que les valeurs correspondantes à la ligne pour laquelle le test est vrai .

en remplacement de
Code:
        For Each c In .Range("N2:N" & .Range("N65000").End(xlUp).Row)
            If c.Value >= CDate(TextBox800.Text) And c.Value <= CDate(TextBox801.Text) Then
                ReDim Preserve tableau(i + 1)
                tableau(i) = .Range("g2:h65536, M:M, c2:c65536").Value
                i = i + 1
            End If
        Next c
essayer
Code:
        For j = 2 To .Range("N65000").End(xlUp).Row
            If .Cells(j, "N").Value >= CDate(TextBox800.Text) And .Cells(j, "N").Value <= CDate(TextBox801.Text) Then
                ReDim Preserve tableau(i + 1)
                tableau(i) = Array(.Range("G" & j), .Range("H" & j), .Range("M" & j), .Range("C" & j))
                i = i + 1
            End If
        Next j

A+
 

piwwwa

XLDnaute Junior
Re : Séléction (de colonne discontinu) et "copie" de données avec la fonction range

Bonjour,

Je reviens vers vous car votre aide m’avez était très utile la première fois, et je me retrouve à nouveau bloqué sur ce bout de code dans mon projet. En effet, je cherche à ajouter une condition de filtre à ce code et je ne sais pas comment faire. C’est-à-dire qu’en plus de « filtrer » en fonction de la date, colonne N, je souhaiterais filtrer les personnes qui sont marquées en tant que « Confirmer » ou « Rajouter » dans la colonne T, et je n’arrive pas créer cette double condition.

Merci d'avance pour votre aide.
 

Paf

XLDnaute Barbatruc
Re : Séléction (de colonne discontinu) et "copie" de données avec la fonction range

re bonjour

le classeur n'est plus disponible sur le lien du post #2

Sans avoir testé, rajouter dans le test If .Cells(j, "N").Value >= .......Then proposé au post # 3,les conditions suivantes:

And ( .Cells(j, "T").Value = "Confirmer" Or .Cells(j, "T").Value = "Rajouter" )

Bonne suite
 

Staple1600

XLDnaute Barbatruc
Re : Séléction (de colonne discontinu) et "copie" de données avec la fonction range

Bonjour à tous

C’est-à-dire qu’en plus de « filtrer » en fonction de la date, colonne N, je souhaiterais filtrer les personnes qui sont marquées
Quand je lis au moins deux fois le mot filtrer dans une phrase, je m'étonne de ne pas trouver dans le code VBA des lignes tel que: ;)
Sub Macro1()
Selection.AutoFilter
ActiveSheet.Range("$A$1:$F$13").AutoFilter Field:=3, Criteria1:= _
"=Confirmer", Operator:=xlOr, Criteria2:="=Rajouter"
End Sub
En résumé, pourquoi ne pas utiliser un filtre automatique ou élaboré piloté par VBA ?

Remarque au passage
piwwwa
Si tu créés un fichier exemple allégé et anonymisé et que tu le zippes
(Clic-droit sur le classeur fermé -> Envoyer vers dossiers compressés)
Tu pourras joindre le zip obtenu directement ici dans ta discussion.

PS: Le petit bout de code n'est pas une solution et sert juste à illustrer mon propos.
 
Dernière édition:

piwwwa

XLDnaute Junior
Re : Séléction (de colonne discontinu) et "copie" de données avec la fonction range

Merci paf et Staple1600.

Effectivement une mauvaise habitude de ma part cette oubli d’ajour de fichier, voilà qui est corrigé !
(c) CJoint.com, 2012

« Filtrer » n’était sans doute pas le terme le plus adapter, en fait je cherche à sélectionner dans une base les personnes qui ont un statut (colonne T de la feuille base) « Confirmer » ou « Rajouter » et seulement eux. Cette sélection doit venir s’ajouter à celle sur les dates qui est faite actuellement, de sorte à ce que l’onglet reporting mensuel ne prennent pas en compte les personne identifié comme « Indisponible » dans la colonne T de la feuille base.
Ce n’est donc pas un filtre, comme mon mauvais choix de mot à put le laisser penser, mais une sélection de donner à copier que je cherche à faire.

Merci d’avance pour votre aide.
 

Discussions similaires

Réponses
1
Affichages
1 K

Statistiques des forums

Discussions
312 488
Messages
2 088 862
Membres
103 979
dernier inscrit
imed