Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Suite à condition, recopier certaines cellules

  • Initiateur de la discussion Initiateur de la discussion jean de chez claude
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

jean de chez claude

Guest
🙁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

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:
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
 
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
 
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

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
 
Re : Suite à condition, recopier certaines cellules

Re,

😡, 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 !
 
Re : Suite à condition, recopier certaines cellules

Bonjour le forum
Quequ'un aurait la solution pour compléter la réponse ?
Merci d'avance pour votre aide
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

L
Réponses
9
Affichages
1 K
LordMarshall
L
M
Réponses
11
Affichages
1 K
macca
M
Réponses
12
Affichages
1 K
  • Question Question
Microsoft 365 Planning
Réponses
2
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…