Résolu Code VBA non exécuté sur excel

damoun1

Nouveau membre
Bonjour,
Je suis débutant en VBA, j'ai composer un petit code concernant la copie des lignes excel depuis une feuil vers une autre en fonction d'une valeur cellule, mais malheureusement lorsque j'ai exécuté le code rien n'a changer !!? peut être j'ai mis un erreur du syntaxe .... !
voila le code


Sub Copy()

Dim i, DerLigneF3 As Integer

For i = 2 To Sheets("Préparation").Cells(Rows.Count, "K").End(xlUp).Row

If Sheets("Préparation").Cells(i, "K") = "R4" Then

DerLigneF3 = Sheets("R4").Cells(Rows.Count, "K").End(xlUp).Row + 1
Sheets("Préparation").Range(Cells(i, "A"), Cells(i, "K")).Copy Destination:=Sheets("R4").Cells(DerLigneF3, "A")

End If
Next
End Sub

 

damoun1

Nouveau membre
je pense que ma question n'est pas précise, pour simplifier ;
j'ai une feuil (Audit) et feuil (Préparation) dans la 1ere il y a des lignes qui contient dans le troisième colonne le mot (NOK). j'aimerais bien qu'un simple Macro fais la copie des ligne qui contient le mot (NOK) depuis feuil (Audit) vers Feuil (Préparation) et coller a partir de la deuxième ligne.
j’espère que j'ai bien expliqué.


merci d'avance
 

drul

Obscur pro du hardware
Staff
Salut,

Quelques erreurs:
Code:
Dim i, DerLigneF3 As Integer
n'est pas autoriser en vba, une ligne par variable (dans ton cas "i" est une variant, pas un integer)

Code:
If Sheets("Préparation").Cells(i, "K") = "R4" Then
Ici tu compare une Range à une "string", c'est loin d'être optimal, rajoute ".value" après cells(...)

Le nom de fonction "copy" est réserver par le système, change le en : "myCopy"

 

damoun1

Nouveau membre
slt,

Merci bcp pr ta réponse :)
J'ai essaye de faire ces modifs mais sans succès, est ce que possible de me fournir un autre code VBA concernant mon besoin ci dessous et merci

j'ai une feuil (Audit) et feuil (Préparation) dans la 1ere il y a des lignes qui contient dans le troisième colonne le mot (NOK). j'aimerais bien qu'un simple Macro fais la copie des ligne qui contient le mot (NOK) depuis feuil (Audit) vers Feuil (Préparation) et coller a partir de la deuxième ligne.
j’espère que j'ai bien expliqué.
 

zeb

Modérateur
Meilleure réponse
Salut,

Code:
Dim i, DerLigneF3 As Integer
Et si malheureusement, la syntaxe est autorisée. Et débouche sur les problèmes cités par Drul.
Solutions :
Code:
// proposée par Drul et ppréférée par zeb :
Dim i As Integer
Dim DerLigneF3 As Integer

// Autre solution :
Dim i As Integer, DerLigneF3 As Integer
Sauf que si DerLigne est un numéro de ligne, ça va pô !!!!!!!!
Les lignes Excel vont de 1 à 65536 (en version 32bits) et un Integer n'est pas assez grand. Il faut déclarer un Long.

Et Range.Value() renvoie un Variant aussi. Oui, le VB est un langage moche, c'est comme ça.

damoun1, si tu dois publier du code ici, merci de respecter le règlement. Utilise la balise [code]

-------------- mode modo/redresseur de tord stop --------------

Si ceci répond à ta question, oui tu as bien expliqué. Sino, c'est que tu as mal expliqué :o ... :whisle:
Code:
Dim source As Range
Dim target As Range

Set target = Worksheets("Préparation").Rows(2)

With Worksheets("Audit")
    For Each source In .Range(.Rows(1), .Cells(.Rows.Count, 3).End(xlUp).EntireRow).Rows
        If source.Cells(3).Value = "NOK" Then
            source.Copy Destination:=target
            Set target = target.Offset(1)
        End If
    Next
End With

Qu'en penses-tu Drul ( :hello: ) ?
 

drul

Obscur pro du hardware
Staff
:hello: zeb, ca semble bien collé avec se qu‘il demande.
Ce qui me chiffonne c'est qu‘il propose une macro fonctionnelle a defaut d'etre parfaite mais ne prends pas la peine de l'adapter a son besoin ...
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 100
Membres
1 586 287
Dernier membre
lucilleguffey
Partager cette page
Haut