Suite à condition, recopier certaines cellules

jean de chez claude

XLDnaute Junior
:(Bonjour à tous
Je souhaiterais faire remonter sur la feuille 2 les textes figurants dans certaines cellules contenues dans une ligne à condition que les cellules de la colonne AM soient supérieures à 0 (zéro) par rapport à une date souhaitée colonne AP(dans l’exemple: 03/11/09)
Le nombre de ligne feuille 2 peut varier au fil des jours.

Merci pour votre précieuse aide;)
 

Pièces jointes

  • Exemple JC.xls
    39.5 KB · Affichages: 79

Robert

XLDnaute Barbatruc
Repose en paix
Re : Suite à condition, recopier certaines cellules

Bonsoir le fil, bonsoir le forum,

Judicieuse remarque de Staple (JM)... Malgré cela, un petit bout de code VBA (puisqu'il est fait) :
Code:
Sub Macro3()
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim tv(7) As Variant 'déclare le tableau de variables tv (Tableau de Variables)
Dim li As Integer 'déclare la variable li (LIgne)
Dim dest As Range 'déclare la variable dest (DESTination)
Dim x As Byte 'déclare la variable x
 
With Sheets("Feuille 1") 'prend en compte l'onglet "Feuille 1"
    Set pl = .Range("AM57:AM" & .Range("AM65536").End(xlUp).Row) 'définit la plage pl
    For Each cel In pl 'boucle sur toutes les cellules éditées cel de la plage pl
        If cel.Value > 0 Then 'condition : si la valeur de la cellule est supérieure à 0
            li = cel.Row 'définit la variable li
            'remplit le tableau de variable tv
            tv(0) = .Cells(li, 1).Value 'colonne A
            tv(1) = .Cells(li, 6).Value 'colonne F
            tv(2) = .Cells(li, 25).Value 'colonne Y
            tv(3) = .Cells(li, 30).Value 'colonne AD
            tv(4) = .Cells(li, 39).Value 'colonne AM
            tv(5) = .Cells(li, 40).Value 'colonne AN
            tv(6) = .Cells(li, 41).Value 'colonne AO
            tv(7) = .Cells(li, 42).Value 'colonne AP
            Set dest = Sheets("Feuille 2").Range("A65536").End(xlUp).Offset(1, 0) 'définit la variable dest
            'récupération des données
            For x = 0 To 7 'boucle sur les valeurs du tableau de variables tv
                dest.Offset(0, x).Value = tv(x) 'récupère la valeur du tableau tv dans l'onglet "Feuille 2"
            Next x 'prochaine variable du tableau tv
        End If 'fin de la condition
    Next cel 'prochaine cellule de la boucle
End With 'fin de la prise en compte de l'onglet "Feuille 1"
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Suite à condition, recopier certaines cellules

Re

Bonsoir Robert

Moi aussi j'ai fait alors je poste

Code:
Sub Macro2()
With Application
    .ScreenUpdating = False
    .Calculation = xlManual
    Range("A56").Select
    Selection.AutoFilter Field:=42, Criteria1:="03/11/09"
    Selection.AutoFilter Field:=39, Criteria1:=">0", Operator:=xlAnd
    ActiveSheet.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Copy
    ActiveSheet.AutoFilterMode = False
        With Sheets("Feuille 2")
        .Range("A18").PasteSpecial Paste:=xlValues
        .Range("B18:E21").Delete Shift:=xlToLeft
        .Range("C18:T21").Delete Shift:=xlToLeft
        .Range("D18:G21").Delete Shift:=xlToLeft
        .Range("E18:K21").Delete Shift:=xlToLeft
        .Range("E18:E21").Delete Shift:=xlToLeft
        .Rows("18:18").Delete Shift:=xlUp
        .Range("F18:H20").NumberFormat = "m/d/yyyy"
        End With
    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
End With
End Sub

PS: c'est un peu cracra mais ca marche et il y a de l'autofilter
 

jean de chez claude

XLDnaute Junior
Re : Suite à condition, recopier certaines cellules

Bonjour
On me dit souvent que je suis un poil c—sur les bords, je pense qu’il y a une part de vérité.
La macro de JM fonctionne mal, elle s’inscrit en feuille 1 et non en feuille 2, elle semble chercher et rapporter des données, mais ces dernières ne s’inscrivent pas et les cellules restent vides.
Pour celle de Robert, rien ne se passe, je ne sais peut-être pas renseigner la plage / cellule / tableau de variables / lignes / destination ……………
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim tv(7) As Variant 'déclare le tableau de variables tv (Tableau de Variables)
Dim li As Integer 'déclare la variable li (LIgne)
Dim dest As Range 'déclare la variable dest (DESTination)
Dim x As Byte 'déclare la variable x

En fait on me dit aussi que je comprends vite, mail il faut m’expliquer longtemps !!!!!!!!!!!!!
Merci pour votre Compréhension et pour votre patience
@+ j’espère
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Suite à condition, recopier certaines cellules

Bonjour le fil, bonjour le forum,

En pièce jointe ton fichier avec la macro. Lance la Macro1 et regarde l'onglet Feuil2... Ça marche ou pas ?
 

Pièces jointes

  • JC_v01.xls
    49.5 KB · Affichages: 57

jean de chez claude

XLDnaute Junior
Re : Suite à condition, recopier certaines cellules

Bonjour Robert
Merci pour ton aide, ta macro fonctionne mais il manque une condition, en plus de "> à zéro" dans la colonne AM, je souhaiterais pouvoir choisir une date dans la colonne AP en faisant référence à la date inscrite cellule B30 (cette date me sert de référence pour faire mes recherches et varie selon mes investigations), mon tableau évolue tous les jours et comprend plus ou moins 5600 lignes.
Encore merci
 

Fo_rum

XLDnaute Accro
Re : Suite à condition, recopier certaines cellules

Re,

On me dit souvent que je suis un poil c—sur les bords, je pense qu’il y a une part de vérité.

En fait on me dit aussi que je comprends vite, mail il faut m’expliquer longtemps !!!!!!!!!!!!!
Merci pour votre Compréhension et pour votre patience
:mad:, donc, nouvelle explication :
la moindre des choses quand on a une réponse est de retourner un avis même s'il est négatif !
 

jean de chez claude

XLDnaute Junior
Re : Suite à condition, recopier certaines cellules

Au secours, au secours, après plusieurs heures de recherches et 3 tubes d’apirine, je n’arrive toujours pas à faire fonctionner ta macro sur mon tableau.
Comme disait l’autre « d’un âne on n’en fait pas un cheval de course, toutefois on peut lui apprendre à courir » merci à ceux qui essaye de m’apprendre.

J’ai copié tes modules dans mon XLSTART , lorsque j’active la macro en mode pas à pas elle bloque en face de : .Range("A56:AP69").AutoFilter et le message suivant remonte :
« La commande n’a pas pu être exécutée avec la plage spécifiée
Sélectionnez une seule cellule dans la plage et réessayez »

Je pense qu’il y a un blème avec With Feuil1 , sur mon tableau les données sont dans la feuille 2, donc j’ai voulu modifier la macro en inscrivant Feuil2 en lieu et place de Feuil1 ce qui fait remonter un autre message « Erreur de compilation variable non définie »
Autrement dit, je ne sais plus que faire, (plus d’aspirine)

Merci d’avance pour votre aide, et @+ j’espère.
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 837
dernier inscrit
Ugo