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

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 !

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

Discussions similaires

Réponses
72
Affichages
1 K
  • Question Question
Microsoft 365 Cpier/coller en VBA
Réponses
7
Affichages
691
Retour