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

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

4 réponses
Avatar
suze32
Bonjour,

Gr=E2ce =E0 l'aide du groupe j'ai r=E9ussi =E0 finir ma macro. Voil=E0 mon
ancien message :

"J'ai une base de donn=E9e, en feuille 2, qui se pr=E9sente sur 4
colonnes : A : Nom ou Raison sociale; B : Date d'encaissement; C :
Commentaires; D : Montant. Une de mes maccros rep=E8re dans ma base de
donn=E9e les lignes o=F9 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 =E0 la date d'aujourd'hui."

La commande que l'on m'a envoy=E9 est trs=E8 bien, cependant lorsqu'elle
colle les valeurs de la colonne "Nom" elle les met bien =E0 la suite
(F15, F16, F17...), alors que pour le "Montant" elle passe de I15 =E0
I17, puis le rest est coll=E9 =E0 la suite (I118, I19...). L acellule I16
est toujours saut=E9e. J'aimerai que tout soit coll=E9 =E0 la suite, sinon
le nom et le montant ne corresponde plus. Voil=E0 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 =3D Date Then
If Feuil1.[F15] <> "" Then
Feuil1.[F65536].End(xlUp).Offset(1, 0) =3D _
Feuil2.Cells(C.Row, 1)
Feuil1.[F65536].End(xlUp).Offset(1, 1) =3D _
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] =3D Feuil2.Cells(C.Row, 1)
Feuil1.[I15] =3D 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

4 réponses

Avatar
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" a écrit dans le message de news:

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
Avatar
suze32
On 20 mai, 15:39, "Tatanka" wrote:
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" a écrit dans le message de news:

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

Avatar
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 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" a écrit dans le message de news:

On 20 mai, 15:39, "Tatanka" wrote:
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" a écrit dans le message de news:

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

Avatar
suze32
On 20 mai, 17:57, "Tatanka" wrote:
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" a écrit dans le message de news:

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





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" a écrit dans le message de news:

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