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
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
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" <jb@free.fr> a écrit dans le message de news:
mn.0d3f7d55950f379a.30888@free.fr...
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" <jb@free.fr> a écrit dans le message de news:
mn.0a267d551e98c812.30888@free.fr...
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
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
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
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" <jb@free.fr> a écrit dans le message de news:
mn.12727d554d60e5eb.30888@free.fr...
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?
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
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
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" <jb@free.fr> a écrit dans le message de news:
mn.12727d554d60e5eb.30888@free.fr...
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
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