OVH Cloud OVH Cloud

supprimer et coller dans une autre feuille

13 réponses
Avatar
JB
Bonjour a tous,

J'ai le Pb suivant à résoudre :

A B
1- 100 toto
2- 101 lulu
3- 101 tata
4- 102
5- 103 pepe
6- 103
7- 104
8- 104

je dois supprimer et coller dans une autre feuille uniquement les
lignes suivantes :

4,7,8

parce que vide en B et pour la valeur existante en A
ex : Il ne faut surtout pas supprimer la ligne 6 parce que pour une
valeur existante en A il y a une valeur non vide en B (ligne 5)

Merci de votre aide

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net

3 réponses

1 2
Avatar
JB
Je viens de tester c'est OK
Mais : J'ai ajouté cette ligne
Sheets("feuil2").Range("C" & Ligne) = c.Offset(0, 1).Value
pour récupérer la valeur en C mais cela ne marche pas !!
Existe t'il une solution pour récupérer la ligne entière?

Merci



Il se trouve que JB a formulé :
Milles merci
Je vais tester cela
C'est super sympa pour les commentaires
Bonne journée

Daniel a utilisé son clavier pour écrire :
Bonsoir.
Comme il est tard et que ça me faisait bouger plus de choses, je me suis
contenté d'ajouter un module de suppression après les copies et des
commentaires.

Sub Test()
Dim Ligne As Integer, c As Range, Res1 As String
Dim Plage As Range
Range("a1", Range("a65536").End(xlUp)).Select 'sélection de la plage à
parcourir
'Copies
Ligne = 1 'numéro de la ligne à écrire sur la feuille "Feuil2"
For Each c In Selection 'boucle pour chaque cellule de la sélection
If c.Offset(0, 1).Value = "" And c.Value <> Res1 Then 'Res1
contient la valeur de la cellule de la colonne A de la ligne précédente
Sheets("feuil2").Range("A" & Ligne) = c.Value 'copie de la
cellule de la colonne A
Sheets("feuil2").Range("B" & Ligne) = c.Offset(0, 1).Value
'copie de la cellule de la colonne B
'====== >> 'ici recopier la ligne précédente pour chaque cellule à
recopier
'====== >> Ligne = Ligne + 1 'incrémentation du numéro de ligne à écrire
End If
If c.Offset(0, 1).Value <> "" Then 'renseignement de Res1
Res1 = c.Value
End If
Next c
'Suppressions
Range("A1").Select
Sheets("Feuil2").Activate 'sélection de la feuille "Feuil2"
Set Plage = Range("a1", Range("a65536").End(xlUp)) 'sélection de la
plage à parcourir
For Each c In Plage 'boucle pour chaque cellule de la sélection
Sheets("Feuil1").Activate 'sélection de la feuille "Feuil2"
Do Until c.Value = ActiveCell.Value And ActiveCell.Offset(0, 1) =
"" 'recherche de la ligne à supprimer
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.EntireRow.Delete 'suppression de la ligne
Next c
End Sub

Cordialement.
Daniel
"JB" a écrit dans le message de news:

Bonsoir,
J'aimerai bien le code modifé et avec en plus sur la feuille 2 on
retrouve la totalité de la ligne concernée (valeur en c,d etcc.)

Grand trés grand merci d'avance
S'il est possible d'ajouter des commentaires cela me permettra de
comprendre mieux la macro
et ainsi de moins déranger les pros

Merci

Daniel a formulé la demande :
Bonjour.
A vrai dire, j'avais pas remarqué le "supprimer". Tu vas t'en sortir ou
tu veux que je t'envoie le code modifié ?
Joyeux premier mai.
Daniel
"JB" a écrit dans le message de news:

Bjr,
J'ai teste
cela marche mais ne supprime pas les lignes concernées de la feuille 1
Merci encore pour votre aide.

Daniel avait soumis l'idée :
Sub Test()
Dim Ligne As Integer, c As Range, Res1 As String
Range("a1", Range("a65536").End(xlUp)).Select
Ligne = 1
For Each c In Selection
If c.Offset(0, 1).Value = "" And c.Value <> Res1 Then
Sheets("feuil2").Range("A" & Ligne) = c.Value
Sheets("feuil2").Range("B" & Ligne) = c.Offset(0, 1).Value
Ligne = Ligne + 1
End If
If c.Offset(0, 1).Value <> "" Then
Res1 = c.Value
End If
Next c
End Sub



-- Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net




-- Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net




--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net







Avatar
Daniel
Bonjour.
c.value représente la valeur de la cellule de la colonne A.
c.Offset(0, 1) représente la valeur de la cellule de la colonne B.
La valeur de la cellule de la colonne C est donc : c.Offset(0, 2), celle de
la colonne D : c.Offset(0, 3) etc.
La propriété Offset représente un décalage par rapport à la cellule
initiale; le premier nombre est le décalage de ligne et le second, le
décalage de colonne.
Cordialement.
Daniel
"JB" a écrit dans le message de news:

Je viens de tester c'est OK
Mais : J'ai ajouté cette ligne
Sheets("feuil2").Range("C" & Ligne) = c.Offset(0, 1).Value
pour récupérer la valeur en C mais cela ne marche pas !!
Existe t'il une solution pour récupérer la ligne entière?

Merci


Avatar
JB
Merci pour ce precieux cours
Cordialement
Jacky

Daniel a pensé très fort :
Bonjour.
c.value représente la valeur de la cellule de la colonne A.
c.Offset(0, 1) représente la valeur de la cellule de la colonne B.
La valeur de la cellule de la colonne C est donc : c.Offset(0, 2), celle de
la colonne D : c.Offset(0, 3) etc.
La propriété Offset représente un décalage par rapport à la cellule initiale;
le premier nombre est le décalage de ligne et le second, le décalage de
colonne.
Cordialement.
Daniel
"JB" a écrit dans le message de news:

Je viens de tester c'est OK
Mais : J'ai ajouté cette ligne
Sheets("feuil2").Range("C" & Ligne) = c.Offset(0, 1).Value
pour récupérer la valeur en C mais cela ne marche pas !!
Existe t'il une solution pour récupérer la ligne entière?

Merci



--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net


1 2