Copier des cellules à la suite sans faire intervenir de cellule vides

Le
suze32
Bonjour,

Grce l'aide du groupe j'ai russi finir ma macro. Voil mon
ancien message :

"J'ai une base de donne, en feuille 2, qui se prsente sur 4
colonnes : A : Nom ou Raison sociale; B : Date d'encaissement; C :
Commentaires; D : Montant. Une de mes maccros repre dans ma base de
donne les lignes o il y a la date d'aujourd'hui (colonne B), il les
copie et les colle dans ma feuille 1. Cependant j'aimerai qu'il ne
colle que les cellules de la colonne A et de la collone D (nom et
montant) qui correspondent la date d'aujourd'hui."

La commande que l'on m'a envoy est trs bien, cependant lorsqu'elle
colle les valeurs de la colonne "Nom" elle les met bien la suite
(F15, F16, F17), alors que pour le "Montant" elle passe de I15
I17, puis le rest est coll la suite (I118, I19). L acellule I16
est toujours saute. J'aimerai que tout soit coll la suite, sinon
le nom et le montant ne corresponde plus. Voil la maccro :

Sub Traitement_Date()
'
If Feuil1.[F15] <> "" Then
Feuil1.Range("F" & _
Feuil1.[F65535].End(xlUp).Row, "M15").Clear
End If
'Feuil2.Activate
For Each C In Feuil2.Range("B2", "B" & _
Feuil2.[B65535].End(xlUp).Row)
If C = Date Then
If Feuil1.[F15] <> "" Then
Feuil1.[F65536].End(xlUp).Offset(1, 0) = _
Feuil2.Cells(C.Row, 1)
Feuil1.[F65536].End(xlUp).Offset(1, 1) = _
Feuil2.Cells(C.Row, 4)
'Range("A" & c.Row, "D" & c.Row).Copy _
Sheets("Feuil1").Range("F65535").End(xlUp).Offset(1, 0)
Else
Feuil1.[F15] = Feuil2.Cells(C.Row, 1)
Feuil1.[I15] = Feuil2.Cells(C.Row, 4)
'Range("A" & c.Row, "D" & c.Row).Copy Sheets("Feuil1").Range("F15")
End If
End If
Next
'Sheets("Feuil1").Activate
End Sub

Merci encore pour votre aide
Suze
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Tatanka
Le #6667991
Bonjour Suze,

«Cependant j'aimerai qu'il ne colle que les cellules de la colonne A et de
la collone D
(nom et montant) qui correspondent à la date d'aujourd'hui.»


Sub Suggestion()
Application.ScreenUpdating = False
Set ici = Feuil2
Set la = Feuil1
If la.[F15] <> "" Then
la.Range("F" & la.[F65535].End(xlUp).Row, "M15").Clear
End If
ici.Activate
For Each c In ici.Range([b2], [b65536].End(xlUp))
ligne = c.Row
If c = Date Then
i = i + 1
With ici
.Cells(ligne, 1).Copy la.Cells(14 + i, 6)
.Cells(ligne, 4).Copy la.Cells(14 + i, 7)
End With
End If
Next c
la.Activate
Application.ScreenUpdating = True
End Sub

Serge





"suze32"
Bonjour,

Grâce à l'aide du groupe j'ai réussi à finir ma macro. Voilà mon
ancien message :

"J'ai une base de donnée, en feuille 2, qui se présente sur 4
colonnes : A : Nom ou Raison sociale; B : Date d'encaissement; C :
Commentaires; D : Montant. Une de mes maccros repère dans ma base de
donnée les lignes où il y a la date d'aujourd'hui (colonne B), il les
copie et les colle dans ma feuille 1. Cependant j'aimerai qu'il ne
colle que les cellules de la colonne A et de la collone D (nom et
montant) qui correspondent à la date d'aujourd'hui."

La commande que l'on m'a envoyé est trsè bien, cependant lorsqu'elle
colle les valeurs de la colonne "Nom" elle les met bien à la suite
(F15, F16, F17...), alors que pour le "Montant" elle passe de I15 à
I17, puis le rest est collé à la suite (I118, I19...). L acellule I16
est toujours sautée. J'aimerai que tout soit collé à la suite, sinon
le nom et le montant ne corresponde plus. Voilà la maccro :

Sub Traitement_Date()
'
If Feuil1.[F15] <> "" Then
Feuil1.Range("F" & _
Feuil1.[F65535].End(xlUp).Row, "M15").Clear
End If
'Feuil2.Activate
For Each C In Feuil2.Range("B2", "B" & _
Feuil2.[B65535].End(xlUp).Row)
If C = Date Then
If Feuil1.[F15] <> "" Then
Feuil1.[F65536].End(xlUp).Offset(1, 0) = _
Feuil2.Cells(C.Row, 1)
Feuil1.[F65536].End(xlUp).Offset(1, 1) = _
Feuil2.Cells(C.Row, 4)
'Range("A" & c.Row, "D" & c.Row).Copy _
Sheets("Feuil1").Range("F65535").End(xlUp).Offset(1, 0)
Else
Feuil1.[F15] = Feuil2.Cells(C.Row, 1)
Feuil1.[I15] = Feuil2.Cells(C.Row, 4)
'Range("A" & c.Row, "D" & c.Row).Copy Sheets("Feuil1").Range("F15")
End If
End If
Next
'Sheets("Feuil1").Activate
End Sub

Merci encore pour votre aide
Suze
suze32
Le #6668301
On 20 mai, 15:39, "Tatanka"
Bonjour Suze,

«Cependant j'aimerai qu'il ne colle que les cellules de la colonne A et de
la collone D
(nom et montant) qui correspondent à la date d'aujourd'hui.»

Sub Suggestion()
      Application.ScreenUpdating = False
      Set ici = Feuil2
      Set la = Feuil1
      If la.[F15] <> "" Then
            la.Range("F" & la.[F65535].End(xlUp).Row, "M15").C lear
      End If
      ici.Activate
      For Each c In ici.Range([b2], [b65536].End(xlUp))
            ligne = c.Row
            If c = Date Then
                  i = i + 1
                  With ici
                        .Cells(ligne, 1).Copy la.C ells(14 + i, 6)
                        .Cells(ligne, 4).Copy la.C ells(14 + i, 7)
                  End With
            End If
            Next c
      la.Activate
      Application.ScreenUpdating = True
End Sub

Serge

"suze32"
Bonjour,

Grâce à l'aide du  groupe j'ai réussi à finir ma macro. Voilà mon
ancien message :

"J'ai une base de donnée, en feuille 2, qui se présente sur 4
colonnes : A : Nom ou Raison sociale; B : Date d'encaissement; C :
Commentaires; D : Montant. Une de mes maccros repère dans ma base de
donnée les lignes où il y a la date d'aujourd'hui (colonne B), il les
copie et les colle dans ma feuille 1. Cependant j'aimerai qu'il ne
colle que les cellules de la colonne A et de la collone D (nom et
montant) qui correspondent à la date d'aujourd'hui."

La commande que l'on m'a envoyé est trsè bien, cependant lorsqu'elle
colle les valeurs de la colonne "Nom" elle les met bien à la suite
(F15, F16, F17...), alors que pour le "Montant" elle passe de I15 à
I17, puis le rest est collé à la suite (I118, I19...). L acellule I16
est toujours sautée. J'aimerai que tout soit collé à la suite, sinon
le nom et le montant ne corresponde plus. Voilà la maccro :

Sub Traitement_Date()
'
If Feuil1.[F15] <> "" Then
Feuil1.Range("F" & _
Feuil1.[F65535].End(xlUp).Row, "M15").Clear
End If
'Feuil2.Activate
 For Each C In Feuil2.Range("B2", "B" & _
Feuil2.[B65535].End(xlUp).Row)
If C = Date Then
If Feuil1.[F15] <> "" Then
Feuil1.[F65536].End(xlUp).Offset(1, 0) = _
Feuil2.Cells(C.Row, 1)
Feuil1.[F65536].End(xlUp).Offset(1, 1) = _
Feuil2.Cells(C.Row, 4)
'Range("A" & c.Row, "D" & c.Row).Copy _
Sheets("Feuil1").Range("F65535").End(xlUp).Offset(1, 0)
Else
Feuil1.[F15] = Feuil2.Cells(C.Row, 1)
Feuil1.[I15] = Feuil2.Cells(C.Row, 4)
'Range("A" & c.Row, "D" & c.Row).Copy Sheets("Feuil1").Range("F15")
End If
End If
Next
'Sheets("Feuil1").Activate
End Sub

Merci encore pour votre aide
Suze


Rebonjour,

En faite le problème auquel vous avez répondu correspondait à l'ancien
message. Moi je voudrais savoir comment éviter de sauter une ligne.

Merci quand même

Tatanka
Le #6668861
Bonjour Suze,

Alors là je ne comprends pas.
Ma macro copie les valeurs des colonnes A et D (Feuil2) pour lesquelles
la date est celle du jour sur les colonnes F et G (Feuil1) à partir de la
ligne 15
et il n'y a pas de lignes vides.
Par exemple, si tu as ceci dans la plage A1:D7 de la Feuil2, que veux-tu
obtenir sur la Feuil1 ?

Nom Date Commentaire Montant
a 10/05/2008 u 12
b 20/05/2008 v 34
c 15/05/2008 w 45
d 20/05/2008 x 23
e 16/05/2008 y 100
f 20/05/2008 z 55



Serge


"suze32"
On 20 mai, 15:39, "Tatanka"
Bonjour Suze,

«Cependant j'aimerai qu'il ne colle que les cellules de la colonne A et de
la collone D
(nom et montant) qui correspondent à la date d'aujourd'hui.»

Sub Suggestion()
Application.ScreenUpdating = False
Set ici = Feuil2
Set la = Feuil1
If la.[F15] <> "" Then
la.Range("F" & la.[F65535].End(xlUp).Row, "M15").Clear
End If
ici.Activate
For Each c In ici.Range([b2], [b65536].End(xlUp))
ligne = c.Row
If c = Date Then
i = i + 1
With ici
.Cells(ligne, 1).Copy la.Cells(14 + i, 6)
.Cells(ligne, 4).Copy la.Cells(14 + i, 7)
End With
End If
Next c
la.Activate
Application.ScreenUpdating = True
End Sub

Serge

"suze32"
Bonjour,

Grâce à l'aide du groupe j'ai réussi à finir ma macro. Voilà mon
ancien message :

"J'ai une base de donnée, en feuille 2, qui se présente sur 4
colonnes : A : Nom ou Raison sociale; B : Date d'encaissement; C :
Commentaires; D : Montant. Une de mes maccros repère dans ma base de
donnée les lignes où il y a la date d'aujourd'hui (colonne B), il les
copie et les colle dans ma feuille 1. Cependant j'aimerai qu'il ne
colle que les cellules de la colonne A et de la collone D (nom et
montant) qui correspondent à la date d'aujourd'hui."

La commande que l'on m'a envoyé est trsè bien, cependant lorsqu'elle
colle les valeurs de la colonne "Nom" elle les met bien à la suite
(F15, F16, F17...), alors que pour le "Montant" elle passe de I15 à
I17, puis le rest est collé à la suite (I118, I19...). L acellule I16
est toujours sautée. J'aimerai que tout soit collé à la suite, sinon
le nom et le montant ne corresponde plus. Voilà la maccro :

Sub Traitement_Date()
'
If Feuil1.[F15] <> "" Then
Feuil1.Range("F" & _
Feuil1.[F65535].End(xlUp).Row, "M15").Clear
End If
'Feuil2.Activate
For Each C In Feuil2.Range("B2", "B" & _
Feuil2.[B65535].End(xlUp).Row)
If C = Date Then
If Feuil1.[F15] <> "" Then
Feuil1.[F65536].End(xlUp).Offset(1, 0) = _
Feuil2.Cells(C.Row, 1)
Feuil1.[F65536].End(xlUp).Offset(1, 1) = _
Feuil2.Cells(C.Row, 4)
'Range("A" & c.Row, "D" & c.Row).Copy _
Sheets("Feuil1").Range("F65535").End(xlUp).Offset(1, 0)
Else
Feuil1.[F15] = Feuil2.Cells(C.Row, 1)
Feuil1.[I15] = Feuil2.Cells(C.Row, 4)
'Range("A" & c.Row, "D" & c.Row).Copy Sheets("Feuil1").Range("F15")
End If
End If
Next
'Sheets("Feuil1").Activate
End Sub

Merci encore pour votre aide
Suze


Rebonjour,

En faite le problème auquel vous avez répondu correspondait à l'ancien
message. Moi je voudrais savoir comment éviter de sauter une ligne.

Merci quand même

suze32
Le #6673551
On 20 mai, 17:57, "Tatanka"
Bonjour Suze,

Alors là je ne comprends pas.
Ma macro copie les valeurs des colonnes A et D (Feuil2) pour lesquelles
la date est celle du jour sur les colonnes F et G (Feuil1) à partir de l a
ligne 15
et il n'y a pas de lignes vides.
Par exemple, si tu as ceci dans la plage A1:D7 de la Feuil2, que veux-tu
obtenir sur la Feuil1 ?

      Nom      Date      Commentaire       Montant
      a 10/05/2008                u            12
      b 20/05/2008                v            34
      c 15/05/2008                w            45
      d 20/05/2008                x            23
      e 16/05/2008                y           100
      f 20/05/2008                z            55

Serge

"suze32"
On 20 mai, 15:39, "Tatanka"




Bonjour Suze,

«Cependant j'aimerai qu'il ne colle que les cellules de la colonne A e t de
la collone D
(nom et montant) qui correspondent à la date d'aujourd'hui.»

Sub Suggestion()
Application.ScreenUpdating = False
Set ici = Feuil2
Set la = Feuil1
If la.[F15] <> "" Then
la.Range("F" & la.[F65535].End(xlUp).Row, "M15").Clear
End If
ici.Activate
For Each c In ici.Range([b2], [b65536].End(xlUp))
ligne = c.Row
If c = Date Then
i = i + 1
With ici
.Cells(ligne, 1).Copy la.Cells(14 + i, 6)
.Cells(ligne, 4).Copy la.Cells(14 + i, 7)
End With
End If
Next c
la.Activate
Application.ScreenUpdating = True
End Sub

Serge

"suze32"
Bonjour,

Grâce à l'aide du groupe j'ai réussi à finir ma macro. Voilà m on
ancien message :

"J'ai une base de donnée, en feuille 2, qui se présente sur 4
colonnes : A : Nom ou Raison sociale; B : Date d'encaissement; C :
Commentaires; D : Montant. Une de mes maccros repère dans ma base de
donnée les lignes où il y a la date d'aujourd'hui (colonne B), il le s
copie et les colle dans ma feuille 1. Cependant j'aimerai qu'il ne
colle que les cellules de la colonne A et de la collone D (nom et
montant) qui correspondent à la date d'aujourd'hui."

La commande que l'on m'a envoyé est trsè bien, cependant lorsqu'elle
colle les valeurs de la colonne "Nom" elle les met bien à la suite
(F15, F16, F17...), alors que pour le "Montant" elle passe de I15 à
I17, puis le rest est collé à la suite (I118, I19...). L acellule I1 6
est toujours sautée. J'aimerai que tout soit collé à la suite, sin on
le nom et le montant ne corresponde plus. Voilà la maccro :

Sub Traitement_Date()
'
If Feuil1.[F15] <> "" Then
Feuil1.Range("F" & _
Feuil1.[F65535].End(xlUp).Row, "M15").Clear
End If
'Feuil2.Activate
For Each C In Feuil2.Range("B2", "B" & _
Feuil2.[B65535].End(xlUp).Row)
If C = Date Then
If Feuil1.[F15] <> "" Then
Feuil1.[F65536].End(xlUp).Offset(1, 0) = _
Feuil2.Cells(C.Row, 1)
Feuil1.[F65536].End(xlUp).Offset(1, 1) = _
Feuil2.Cells(C.Row, 4)
'Range("A" & c.Row, "D" & c.Row).Copy _
Sheets("Feuil1").Range("F65535").End(xlUp).Offset(1, 0)
Else
Feuil1.[F15] = Feuil2.Cells(C.Row, 1)
Feuil1.[I15] = Feuil2.Cells(C.Row, 4)
'Range("A" & c.Row, "D" & c.Row).Copy Sheets("Feuil1").Range("F15")
End If
End If
Next
'Sheets("Feuil1").Activate
End Sub

Merci encore pour votre aide
Suze


Rebonjour,

En faite le problème auquel vous avez répondu correspondait à l'anci en
message. Moi je voudrais savoir comment éviter de sauter une ligne.

Merci quand même- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Bonjour Tatanka,

Avec votre exemple, en feuille 1 s'affichera à la date du 20 Mai,

b 34
d 23
f 55

Le Seul souci c'est que pour le "Nom" mes cellules F, G, H sont
fusionnées, c'est pour cela que je passe de F à I directement.

Merci
Suze


Publicité
Poster une réponse
Anonyme