Ajout de ligne dans un autre tableau sauf certaines cellules

Le
Dominique
bonjour,
Comment je pourrais traduire ceci en macro

Pour chaque ligne du tableau "feuil1" sauf la première ligne

IF RAnge(K) contient un texte
Then copier les ligne dans la feuille "listeModifiée" sauf les cellules
(O:Z) de Feuil1
end If

supprimé dans Feuil1 les colonnes (K:N)

Merci pour votre aide
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FFO
Le #19713871
Salut Dominique

Je te propose ceci :

i = 2
Do While i < Sheets("Feuil1").Range("K65535").End(xlUp).Row + 1
If IsNumeric(Sheets("Feuil1").Range("K" & i)) = False And
IsDate(Sheets("Feuil1").Range("K" & i)) = False Then
j = Sheets("listeModifiée").Range("A65535").End(xlUp).Row + 1
Sheets("Feuil1").Range("A" & i, "N" & i).Copy
Sheets("listeModifiée").Range("A" & j)
Sheets("Feuil1").Range("AA" & i, "IV" & i).Copy
Sheets("listeModifiée").Range("AA" & j)
Sheets("Feuil1").Range("K" & i, "N" & i).Clear
End If
i = i + 1
Loop

non essayé mais celà devrait fonctionner

Dis moi !!!!!
Dominique
Le #19714271
Le 07/07/2009 11:52, FFO a écrit :
Salut Dominique

Je te propose ceci :

i = 2
Do While i< Sheets("Feuil1").Range("K65535").End(xlUp).Row + 1
If IsNumeric(Sheets("Feuil1").Range("K"& i)) = False And
IsDate(Sheets("Feuil1").Range("K"& i)) = False Then
j = Sheets("listeModifiée").Range("A65535").End(xlUp).Row + 1
Sheets("Feuil1").Range("A"& i, "N"& i).Copy
Sheets("listeModifiée").Range("A"& j)
Sheets("Feuil1").Range("AA"& i, "IV"& i).Copy
Sheets("listeModifiée").Range("AA"& j)
Sheets("Feuil1").Range("K"& i, "N"& i).Clear
End If
i = i + 1
Loop

non essayé mais celà devrait fonctionner

Dis moi !!!!!



Merci beaucoup pour ton aide, Je suis débutant et en plein apprentissage
mais j ai une erreur sur la ligne : Sheets("ListeModifiée").Range ("A" & j)
je te joint le fichier de demo pour bien comprendre mon probleme.

http://cjoint.com/?hgw6jwP2C7
isabelle
Le #19714601
bonjour Dominique,

ces deux lignes :

Sheets("Feuil1").Range("AA"& i, "IV"& i).Copy
Sheets("listeModifiée").Range("AA"& j)

doivent être mit sur une seule ligne,

isabelle

Dominique a écrit :
Le 07/07/2009 11:52, FFO a écrit :
Salut Dominique

Je te propose ceci :

i = 2
Do While i< Sheets("Feuil1").Range("K65535").End(xlUp).Row + 1
If IsNumeric(Sheets("Feuil1").Range("K"& i)) = False And
IsDate(Sheets("Feuil1").Range("K"& i)) = False Then
j = Sheets("listeModifiée").Range("A65535").End(xlUp).Row + 1
Sheets("Feuil1").Range("A"& i, "N"& i).Copy
Sheets("listeModifiée").Range("A"& j)
Sheets("Feuil1").Range("AA"& i, "IV"& i).Copy
Sheets("listeModifiée").Range("AA"& j)
Sheets("Feuil1").Range("K"& i, "N"& i).Clear
End If
i = i + 1
Loop

non essayé mais celà devrait fonctionner

Dis moi !!!!!



Merci beaucoup pour ton aide, Je suis débutant et en plein apprentissage
mais j ai une erreur sur la ligne : Sheets("ListeModifiée").Range ("A"
& j)
je te joint le fichier de demo pour bien comprendre mon probleme.

http://cjoint.com/?hgw6jwP2C7


Dominique
Le #19714851
Merci Isabelle
On est pas loin du but mais peux tu regarder mon fichier demo joint pour
bien comprendre le but http://cjoint.com/?hgw6jwP2C7

j ai du mal car après je doit remettre cette macro dans une boucle.

Et ce code :
> Sub essaicollage2emecommune()
>
> i = 2
> Do While i < Sheets("Feuil1").Range("K65535").End(xlUp).Row + 1
> If IsNumeric(Sheets("Feuil1").Range("K" & i)) = False And
IsDate(Sheets("Feuil1").Range("K" & i)) = False Then
> j = Sheets("ListeModifiée").Range("A65535").End(xlUp).Row + 1
> Sheets("Feuil1").Range("A" & i, "N" & i).Copy
Sheets("ListeModifiée").Range("A" & j)
> Sheets("Feuil1").Range("AA" & i, "IV" & i).Copy
Sheets("ListeModifiée").Range("AA" & j)

> End If
> i = i + 1
> Loop
>
> End Sub

ne remet pas en place toutes les cellules au bon endroit.

et j ai essayer aussi ce code :
Sub test()

Dim derLigne As Long, Ajout As Long, derligneListeModifiée As Long
Dim i As Integer
derligneListeModifiée =
Sheets("ListeModifiée").Range("A65536").End(xlUp).Row
derLigne = Sheets("feuil1").Range("A65536").End(xlUp).Row 'Renvoi la
dernière ligne remplie de la colonne A
Ajout = derLigne 'Defini la ligne pour le collage, à la suite de la derligne

For i = 2 To derLigne 'Boucle de 2 à la dernière ligne, 2 car titre en
ligne 1
If IsNumeric(Cells(i, 11)) = False Then 'Si n'est pas numéric
alors; i = numéro de ligne; 11 = colonne K
Ajout = Ajout + 1 'On incrémente la derLigne de 1 pour ajouter
à la suite
Sheets("Feuil1").Range(Cells(i, 1), Cells(i, 14)).Copy
Destination:ÞrligneListeModifiée.Cells(Ajout, 1)
'On copie la ligne i de A (1) à N (14), i prend la valeur selon
la boucle, donc première boucle la Range = "A2:N2"
End If
Next i
End Sub

Mais la aussi j'ai une erreur
Merci pour ton aide

http://cjoint.com/?hgw6jwP2C7
FFO
Le #19714841
Rebonjour Dominique
Si tu as une erreur à la ligne :

Sheets("ListeModifiée").Range ("A" & j)

c'est que la recopie du code s'est mal faite

Les lignes :

Sheets("Feuil1").Range("A" & i, "N" & i).Copy
Sheets("listeModifiée").Range("A" & j)


doivent être sur la même ligne en une seule ligne et non en 2

de même pour les lignes :

Sheets("Feuil1").Range("AA" & i, "IV" & i).Copy
Sheets("listeModifiée").Range("AA" & j)

De plus tes conditions de départ étaient :

"copier les ligne dans la feuille "listeModifiée" sauf les cellules
(O:Z) de Feuil1"

C'est à dire recopie des cellules colonnes A à N et AA jusqu'à la fin

Or dans ton fichier exemple tu souhaites recopier les cellules de la colonne
A à N et de AE jusqu'à la fin

Ce qui n'est pas la même chose

Sur ce lien j'ai modifié suivant ton exemple

Aprés avoir mis en feuil1 les paramètres de base actives le bouton
"Traitement"

Vas voir le résultat Onglet "listeModifiée"

La recopie se fait grace aux lignes de type:

Sheets("Feuil1").Range("A" & i, "N" & i).Copy
Sheets("listeModifiée").Range("A" & j)

La première partie détermine les colonne des cellules à recopier :

Sheets("Feuil1").Range("A" & i, "N" & i).Copy (ici de A à N)

La deuxième partie détermine à partir de quelle colonne Onglet
"listeModifiée" cette recopie doit se faire :

Sheets("listeModifiée").Range("A" & j) (ici colonne A)

Tu peux adapter ces lignes, en rajouter ou en supprimer à ta convenance en
fonction de ton besoin

http://www.cijoint.fr/cjlink.php?file=cj200907/cijfKwRLiu.xls


Donnes moi des nouvelles

"Dominique" wrote:
isabelle
Le #19715241
bonjour Dominique,

est ce que la dernière solution donnée par FFO te convient ?

isabelle

Dominique a écrit :
Merci Isabelle
On est pas loin du but mais peux tu regarder mon fichier demo joint
pour bien comprendre le but http://cjoint.com/?hgw6jwP2C7

j ai du mal car après je doit remettre cette macro dans une boucle.

Et ce code :
> Sub essaicollage2emecommune()
>
> i = 2
> Do While i < Sheets("Feuil1").Range("K65535").End(xlUp).Row + 1
> If IsNumeric(Sheets("Feuil1").Range("K" & i)) = False And
IsDate(Sheets("Feuil1").Range("K" & i)) = False Then
> j = Sheets("ListeModifiée").Range("A65535").End(xlUp).Row + 1
> Sheets("Feuil1").Range("A" & i, "N" & i).Copy
Sheets("ListeModifiée").Range("A" & j)
> Sheets("Feuil1").Range("AA" & i, "IV" & i).Copy
Sheets("ListeModifiée").Range("AA" & j)

> End If
> i = i + 1
> Loop
>
> End Sub

ne remet pas en place toutes les cellules au bon endroit.

et j ai essayer aussi ce code :
Sub test()

Dim derLigne As Long, Ajout As Long, derligneListeModifiée As Long
Dim i As Integer
derligneListeModifiée =
Sheets("ListeModifiée").Range("A65536").End(xlUp).Row
derLigne = Sheets("feuil1").Range("A65536").End(xlUp).Row 'Renvoi la
dernière ligne remplie de la colonne A
Ajout = derLigne 'Defini la ligne pour le collage, à la suite de la
derligne

For i = 2 To derLigne 'Boucle de 2 à la dernière ligne, 2 car titre en
ligne 1
If IsNumeric(Cells(i, 11)) = False Then 'Si n'est pas numéric
alors; i = numéro de ligne; 11 = colonne K
Ajout = Ajout + 1 'On incrémente la derLigne de 1 pour
ajouter à la suite
Sheets("Feuil1").Range(Cells(i, 1), Cells(i, 14)).Copy
Destination:ÞrligneListeModifiée.Cells(Ajout, 1)
'On copie la ligne i de A (1) à N (14), i prend la valeur selon
la boucle, donc première boucle la Range = "A2:N2"
End If
Next i
End Sub

Mais la aussi j'ai une erreur
Merci pour ton aide

http://cjoint.com/?hgw6jwP2C7



Dominique
Le #19715441
Merci pour votre investissement
j ai adapté avec vos conseils la macro la voila. elle parait longue mais
elle a l air efficace. je l ai tester sur une 10aine de lignes.
Elle servira pour un fichier de plus de 2500 lignes j espère qu'elle
fonctionnera.
et encore merci beaucoup


Sub Traitement()
'
' Macro3 Macro
' Macro enregistrée le 07/07/2009 par FORCET
'
i = 2
Do While i < Sheets("Feuil1").Range("K65535").End(xlUp).Row + 1
If IsNumeric(Sheets("Feuil1").Range("K" & i)) = False And
IsDate(Sheets("Feuil1").Range("K" & i)) = False Then
j = Sheets("listeModifiée").Range("K65535").End(xlUp).Row + 1
Sheets("Feuil1").Range("A" & i, "N" & i).Copy
Sheets("listeModifiée").Range("A" & j)
Sheets("Feuil1").Range("AE" & i, "IV" & i).Copy
Sheets("listeModifiée").Range("O" & j)

End If
i = i + 1
Loop
Sheets("Feuil1").Columns("K:N").Delete
'
'pour la 2emme commune

i = 2
Do While i < Sheets("Feuil1").Range("K65535").End(xlUp).Row + 1
If IsNumeric(Sheets("Feuil1").Range("K" & i)) = False And
IsDate(Sheets("Feuil1").Range("K" & i)) = False Then
j = Sheets("listeModifiée").Range("K65535").End(xlUp).Row + 1
Sheets("Feuil1").Range("A" & i, "N" & i).Copy
Sheets("listeModifiée").Range("A" & j)
Sheets("Feuil1").Range("AA" & i, "IV" & i).Copy
Sheets("listeModifiée").Range("O" & j)

End If
i = i + 1
Loop
Sheets("Feuil1").Columns("K:N").Delete

'pour la 3eme commune

i = 2
Do While i < Sheets("Feuil1").Range("K65535").End(xlUp).Row + 1
If IsNumeric(Sheets("Feuil1").Range("K" & i)) = False And
IsDate(Sheets("Feuil1").Range("K" & i)) = False Then
j = Sheets("listeModifiée").Range("K65535").End(xlUp).Row + 1
Sheets("Feuil1").Range("A" & i, "N" & i).Copy
Sheets("listeModifiée").Range("A" & j)
Sheets("Feuil1").Range("W" & i, "IV" & i).Copy
Sheets("listeModifiée").Range("O" & j)

End If
i = i + 1
Loop
Sheets("Feuil1").Columns("K:N").Delete

'pour la 4eme commune
i = 2
Do While i < Sheets("Feuil1").Range("K65535").End(xlUp).Row + 1
If IsNumeric(Sheets("Feuil1").Range("K" & i)) = False And
IsDate(Sheets("Feuil1").Range("K" & i)) = False Then
j = Sheets("listeModifiée").Range("K65535").End(xlUp).Row + 1
Sheets("Feuil1").Range("A" & i, "N" & i).Copy
Sheets("listeModifiée").Range("A" & j)
Sheets("Feuil1").Range("s" & i, "IV" & i).Copy
Sheets("listeModifiée").Range("O" & j)

End If
i = i + 1
Loop
Sheets("Feuil1").Columns("K:N").Delete

'pour la 5eme commune
i = 2
Do While i < Sheets("Feuil1").Range("K65535").End(xlUp).Row + 1
If IsNumeric(Sheets("Feuil1").Range("K" & i)) = False And
IsDate(Sheets("Feuil1").Range("K" & i)) = False Then
j = Sheets("listeModifiée").Range("K65535").End(xlUp).Row + 1
Sheets("Feuil1").Range("A" & i, "N" & i).Copy
Sheets("listeModifiée").Range("A" & j)
Sheets("Feuil1").Range("O" & i, "IV" & i).Copy
Sheets("listeModifiée").Range("O" & j)

End If
i = i + 1
Loop
Sheets("Feuil1").Columns("K:N").Delete


End Sub
Publicité
Poster une réponse
Anonyme