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

Le
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
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
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