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

XL 2013 VBA si une cellule contient OK alors copier/coller les valeurs

SimonAbrhm

XLDnaute Nouveau
Bonjour à tous,

Je débute VBA et je rencontre quelques difficultés avec ma macro.

Je souhaiterais en fonction de ce que contient une cellule dans la colonne B par exemple B1=OK alors copier/coller vers une autre feuille des cellules A1 et B1 tout cela avec une boucle.

Pour l'instant, ma macro ressemble à ça :

Dim x As Integer
For Each x In Range("B1:B100")
If x = "OK" Then
x.Rows.Copy
End if Next

Par avance merci pour votre aide,

Cordialement,

Simon
 

JCGL

XLDnaute Barbatruc
Bonjour à tous,

Bienvenue sur XLD

Peux-tu essayer avec ceci :
Code:
Option Explicit

Sub Test()
    Dim Lig&, DerL&
    DerL = Feuil2.Range("B" & Rows.Count).End(3).Row
    For Lig = 1 To 100
        If Feuil1.Cells(Lig, 2) = "OK" Then
            Feuil1.Rows(Lig).Copy Feuil2.Range("A" & DerL)
            DerL = DerL + 1
        End If
    Next
End Sub

A+ à tous
 
Dernière édition:

SimonAbrhm

XLDnaute Nouveau
Bonjour,

Merci beaucoup pour votre réactivité.

La macro marche en partie c'est à dire qu'elle me copie/colle la dernière ligne contenant "OK" dans la colonne B, et je souhaiterai qu'elle me copie/colle l'ensemble des lignes contenant "OK".

Merci d'avance pour votre retour,

Cordialement
 

SimonAbrhm

XLDnaute Nouveau
Dernier petit problème, je viens de me rendre compte quand exécutant la macro 2 fois d'affilés par exemple la macro colle les nouvelles informations au-dessus de la dernière valeur collée dans la feuil2, du coup il me manque une ligne.

Je sais pas si il est possible de corriger ce problème.

Merci d'avance.
 

JCGL

XLDnaute Barbatruc
Bonjour à tous,

Peux-tu essayer :

VB:
Option Explicit

Sub Test()
    Dim Lig&, DerL&
    DerL = Feuil2.Range("B" & Rows.Count).End(3).Row
    Feuil2.Range("A1:B" & DerL).ClearContents
    For Lig = 2 To Feuil1.Range("A" & Rows.Count).End(3).Row
        If Feuil1.Cells(Lig, 2) = "OK" Then
            Feuil1.Rows(Lig).Copy Feuil2.Range("A" & DerL)
            DerL = DerL + 1
        End If
    Next
End Sub

A+ à tous
 

SimonAbrhm

XLDnaute Nouveau
JCGL,
Malheureusement ça ne marche pas, au lieu de mettre les lignes collées à la suite des anciennes lignes collées dans la feuille 2, la macro colle les lignes dans la feuille 2 en sautant le nombre de lignes qu'il y a coller.
Avez-vous peut-être une autre idée pour pallier à ce problème merci.
Je vous joins mon fichier.
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…