Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ajout de ligne dans un autre tableau sauf certaines cellules

7 réponses
Avatar
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

7 réponses

Avatar
FFO
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 !!!!!
Avatar
Dominique
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
Avatar
isabelle
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


Avatar
Dominique
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
Avatar
FFO
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:
Avatar
isabelle
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



Avatar
Dominique
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