Macro Excel pour copie ligne

Latrell74

Nouveau membre
Bonjour,

J'essaye de créer une macro Excel pour copier toutes les lignes d'une feuille (matos_cam) qui ont comme valeur 1 dans le champ de la colonne 1 et de copier ces lignes sur une deuxième feuille (pack01_Z7) à partir de la ligne 3

J'ai récupéré un bout de code que j'ai essayé de modifier et voici ce que cela donne :

[cpp]Sub test()

Dim iMa As Long
Dim iP01 As Long
Dim Ma As Worksheet
Dim P01 As Worksheet
Set Ma = Worksheets("matos_cam")
Set P01 = Worksheets("pack01_Z7")

iP01 = 3
For iR = 0 To 65536
If Ma.Cells(iMa, 1).Text = "1" Then
Ma.Range(iMa & ":" & iMa).Copy P01.Cells(iP01, 1)
iP01 = iP01 + 1
End If
Next
End Sub[/cpp]

Cela ne marche pas. cela viendrait de la ligne If Ma. Cells.. apparemment.
Je pense avoir compris la structure générale du code mais j'avoue avoir du mal à piger le concept des Integer.

Merciiiiii d'avance pour votre aide
 

zeb

Modérateur
Salut,

Ligne 11, tu utilises une variable que tu ne réutilises plus ailleurs.
Ne confondrais-tu pas iMa et iR, qui n'est pas même pas déclaré. C'est à ce propos pourquoi je préconise toujours de mettre Option Explicit en début de code. :o

N'hésite pas à indenter ton code ;)

Ça t'aide ?
 

Latrell74

Nouveau membre
ça m'aide effectivement merci : je suis une buse :)
Comme je l'ai dit je suis reparti d'un code trouvé et je l'ai modifié mais j'ai oublié de modifier cette ligne donc là j'ai changé le iR en iMa.

A quoi sert le Option Explicit ? Dsl l'aide n'est pas installée sur mon Excel :)

Voici donc où j'en suis et apparemment toujours un prob à la ligne 12

[cpp]Sub test()

Dim iMa As Long
Dim iP01 As Long

Dim Ma As Worksheet
Dim P01 As Worksheet

Set Ma = Worksheets("matos_cam")
Set P01 = Worksheets("pack01_Z7")

iP01 = 3

For iMa = 0 To 65536

If Ma.Cells(iMa, 1).Text = "1" Then
Ma.Range(iMa & ":" & iMa).Copy P01.Cells(iP01, 1)

iP01 = iP01 + 1
End If
Next
End Sub[/cpp]

 

zeb

Modérateur
Salut,

Il n'est pas concevable de ne pas installer l'aide sur ton poste et de le substituer par ce forum. D'ailleurs, la réponse à ta question sur l'essentielle Option Explicit va être celle-ci : RTFM. Si tu es chez toi, installe-la. Si tu es au boulot, exige-la !

Je ne vois aucun problème ligne 12. Quelle est le message d'erreur ?

En revanche, j'en vois un ligne 14. Tu comptes à parti de 0. Il faut commencer à 1.

-----------------

Ligne 16, tu as calculé une adresse, resers-t-en ligne 17 :
Code:
If Ma.Cells(iMa, 1).Text = "1" Then
    Ma.Cells(iMa, 1).EntireRow.Copy P01.Cells(iP01, 1)

En voyant ce code, on a même envie de déclarer une variable ;)

Pour l'indentation, c'est pas mal, mais décale aussi les lignes 17, 19 et 20.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 132
Messages
6 718 045
Membres
1 586 390
Dernier membre
HarryMag
Partager cette page
Haut