Le 20/déc./2018 à 19:11, Jarobasearobase a écrit :
Bonjour à tous je n'arrive pas à copier mes données dans la colonne de la feuille Cible dont l'entête est semblable à la cellule D1 de la feuille Source. Sub CopierSaisies() Dim c As Variant For Each c In Worksheets("Cible").Range("d1:o1") 'les entêtes à comparer If c = Worksheets("Source").Range("D1") Then 'l'élément à comparer With Worksheets("Source") .Range("D10:D26").Copy ' Worksheets("Cible").Range("H2").PasteSpecial xlValues '''' cela fonctionne Worksheets("Cible").Cells(2, c).PasteSpecial xlValues '''' ici j'ai une erreur 13 ' la copie doit se faire dans la colonne de la feuille Cible dont l'entête = D1 de la feuille Source End With End If Next End Sub Merci pour l'aide Cordialement J@@
Bonjour, La variable C devrait être de type Range Worksheets("Cible").Cells(2, c).PasteSpecial xlValues C devrait une cellule et non une colonne. En définissant C as Range, tu pourrais utiliser : Worksheets("Cible").Cells(2, c.row).PasteSpecial xlValues Je te suggère une autre approche pour copier la valeur d'une plage de cellules vers une autre destination qui est simple et rapide. Nom des feuilles et des plages de cellules à adapter. '-------------------------------- Sub test() Dim T As Variant With Worksheets("Feuil1") '.Tu places les données du tableau dans une 'variable de type tableau T = .Range("A1:A10").Value End With 'Maintenant, tu peux copier le tableau T où tu veux 'comme ceci, aussi souvent que tu veux. With Worksheets("Feuil2") 'Copie vers la plage B1:B10 .Range("B1").Resize(UBound(T, 1), UBound(T, 2)) = T 'Copie vers la plage G10:G19 .Range("G10").Resize(UBound(T, 1), UBound(T, 2)) = T End With End Sub '-------------------------------- MichD
Le 20/déc./2018 à 19:11, Jarobasearobase a écrit :
Bonjour à tous
je n'arrive pas à copier mes données dans la colonne de la feuille Cible
dont l'entête est semblable à la cellule D1 de la feuille Source.
Sub CopierSaisies()
Dim c As Variant
For Each c In Worksheets("Cible").Range("d1:o1") 'les entêtes à comparer
If c = Worksheets("Source").Range("D1") Then 'l'élément à comparer
With Worksheets("Source")
.Range("D10:D26").Copy
' Worksheets("Cible").Range("H2").PasteSpecial xlValues '''' cela
fonctionne
Worksheets("Cible").Cells(2, c).PasteSpecial xlValues '''' ici
j'ai une erreur 13
' la copie doit se faire dans la colonne de la feuille Cible dont
l'entête = D1 de la feuille Source
C devrait une cellule et non une colonne.
En définissant C as Range, tu pourrais utiliser :
Worksheets("Cible").Cells(2, c.row).PasteSpecial xlValues
Je te suggère une autre approche pour copier la valeur d'une plage de
cellules vers une autre destination qui est simple et rapide.
Nom des feuilles et des plages de cellules à adapter.
'--------------------------------
Sub test()
Dim T As Variant
With Worksheets("Feuil1")
'.Tu places les données du tableau dans une
'variable de type tableau
T = .Range("A1:A10").Value
End With
'Maintenant, tu peux copier le tableau T où tu veux
'comme ceci, aussi souvent que tu veux.
With Worksheets("Feuil2")
'Copie vers la plage B1:B10
.Range("B1").Resize(UBound(T, 1), UBound(T, 2)) = T
'Copie vers la plage G10:G19
.Range("G10").Resize(UBound(T, 1), UBound(T, 2)) = T
End With
Le 20/déc./2018 à 19:11, Jarobasearobase a écrit :
Bonjour à tous je n'arrive pas à copier mes données dans la colonne de la feuille Cible dont l'entête est semblable à la cellule D1 de la feuille Source. Sub CopierSaisies() Dim c As Variant For Each c In Worksheets("Cible").Range("d1:o1") 'les entêtes à comparer If c = Worksheets("Source").Range("D1") Then 'l'élément à comparer With Worksheets("Source") .Range("D10:D26").Copy ' Worksheets("Cible").Range("H2").PasteSpecial xlValues '''' cela fonctionne Worksheets("Cible").Cells(2, c).PasteSpecial xlValues '''' ici j'ai une erreur 13 ' la copie doit se faire dans la colonne de la feuille Cible dont l'entête = D1 de la feuille Source End With End If Next End Sub Merci pour l'aide Cordialement J@@
Bonjour, La variable C devrait être de type Range Worksheets("Cible").Cells(2, c).PasteSpecial xlValues C devrait une cellule et non une colonne. En définissant C as Range, tu pourrais utiliser : Worksheets("Cible").Cells(2, c.row).PasteSpecial xlValues Je te suggère une autre approche pour copier la valeur d'une plage de cellules vers une autre destination qui est simple et rapide. Nom des feuilles et des plages de cellules à adapter. '-------------------------------- Sub test() Dim T As Variant With Worksheets("Feuil1") '.Tu places les données du tableau dans une 'variable de type tableau T = .Range("A1:A10").Value End With 'Maintenant, tu peux copier le tableau T où tu veux 'comme ceci, aussi souvent que tu veux. With Worksheets("Feuil2") 'Copie vers la plage B1:B10 .Range("B1").Resize(UBound(T, 1), UBound(T, 2)) = T 'Copie vers la plage G10:G19 .Range("G10").Resize(UBound(T, 1), UBound(T, 2)) = T End With End Sub '-------------------------------- MichD
MichD
Bonjour, La variable C devrait être de type Range Worksheets("Cible").Cells(2, c).PasteSpecial xlValues C devrait une cellule et non une colonne. En définissant C as Range, tu pourrais utiliser : Worksheets("Cible").Cells(2, c.row).PasteSpecial xlValues Je te suggère une autre approche pour copier la valeur d'une plage de cellules vers une autre destination qui est simple et rapide. Nom des feuilles et des plages de cellules à adapter. '-------------------------------- Sub test() Dim T As Variant With Worksheets("Feuil1") '.Tu places les données du tableau dans une 'variable de type tableau T = .Range("A1:A10").Value End With 'Maintenant, tu peux copier le tableau T où tu veux 'comme ceci, aussi souvent que tu veux. With Worksheets("Feuil2") 'Copie vers la plage B1:B10 .Range("B1").Resize(UBound(T, 1), UBound(T, 2)) = T 'Copie vers la plage G10:G19 .Range("G10").Resize(UBound(T, 1), UBound(T, 2)) = T End With End Sub '-------------------------------- MichD
C devrait une cellule et non une colonne.
En définissant C as Range, tu pourrais utiliser :
Worksheets("Cible").Cells(2, c.row).PasteSpecial xlValues
Je te suggère une autre approche pour copier la valeur d'une plage de
cellules vers une autre destination qui est simple et rapide.
Nom des feuilles et des plages de cellules à adapter.
'--------------------------------
Sub test()
Dim T As Variant
With Worksheets("Feuil1")
'.Tu places les données du tableau dans une
'variable de type tableau
T = .Range("A1:A10").Value
End With
'Maintenant, tu peux copier le tableau T où tu veux
'comme ceci, aussi souvent que tu veux.
With Worksheets("Feuil2")
'Copie vers la plage B1:B10
.Range("B1").Resize(UBound(T, 1), UBound(T, 2)) = T
'Copie vers la plage G10:G19
.Range("G10").Resize(UBound(T, 1), UBound(T, 2)) = T
End With
Bonjour, La variable C devrait être de type Range Worksheets("Cible").Cells(2, c).PasteSpecial xlValues C devrait une cellule et non une colonne. En définissant C as Range, tu pourrais utiliser : Worksheets("Cible").Cells(2, c.row).PasteSpecial xlValues Je te suggère une autre approche pour copier la valeur d'une plage de cellules vers une autre destination qui est simple et rapide. Nom des feuilles et des plages de cellules à adapter. '-------------------------------- Sub test() Dim T As Variant With Worksheets("Feuil1") '.Tu places les données du tableau dans une 'variable de type tableau T = .Range("A1:A10").Value End With 'Maintenant, tu peux copier le tableau T où tu veux 'comme ceci, aussi souvent que tu veux. With Worksheets("Feuil2") 'Copie vers la plage B1:B10 .Range("B1").Resize(UBound(T, 1), UBound(T, 2)) = T 'Copie vers la plage G10:G19 .Range("G10").Resize(UBound(T, 1), UBound(T, 2)) = T End With End Sub '-------------------------------- MichD
Jarobasearobase
Merci Denis **Pour la version avec Array : 1 - comment avoir plusieurs plages en Array qui se copieront à la suite l'une de l'autre : T = .Range("D10:D26", "E10:E26", "F10:F22").Value ' erreur 450 2 - la zone de copie est variable (c'était le but de mon c) c'est à dire que la copie se fait dans la colonne dont l'entête a le même contenu que la cellule D1 de la feuille Origine (j'ai 12 colonnes janvier à décembre en Cible). **Pour la version avec la variable c, en pressant F8, le c.row donne "1" et colle en colonne A, alors qu'il devrait indiquer "7" pour coller dans la colonne où l'entête mentionne "juillet", Merci pour tes lumières, et ta patience. Cordialement J@@ Le 20/12/2018 à 14:35, MichD a écrit :
Bonjour, La variable C devrait être de type Range Worksheets("Cible").Cells(2, c).PasteSpecial xlValues C devrait une cellule et non une colonne. En définissant C as Range, tu pourrais utiliser : Worksheets("Cible").Cells(2, c.row).PasteSpecial xlValues Je te suggère une autre approche pour copier la valeur d'une plage de cellules vers une autre destination qui est simple et rapide. Nom des feuilles et des plages de cellules à adapter. '-------------------------------- Sub test() Dim T As Variant With Worksheets("Feuil1") '.Tu places les données du tableau dans une 'variable de type tableau T = .Range("A1:A10").Value End With 'Maintenant, tu peux copier le tableau T où tu veux 'comme ceci, aussi souvent que tu veux. With Worksheets("Feuil2") 'Copie vers la plage B1:B10 .Range("B1").Resize(UBound(T, 1), UBound(T, 2)) = T 'Copie vers la plage G10:G19 .Range("G10").Resize(UBound(T, 1), UBound(T, 2)) = T End With End Sub '-------------------------------- MichD
Merci Denis
**Pour la version avec Array :
1 - comment avoir plusieurs plages en Array qui se copieront à la suite l'une de l'autre :
T = .Range("D10:D26", "E10:E26", "F10:F22").Value ' erreur 450
2 - la zone de copie est variable (c'était le but de mon c) c'est à dire que la copie se fait dans
la colonne dont l'entête a le même contenu que la cellule D1 de la feuille Origine (j'ai 12 colonnes
janvier à décembre en Cible).
**Pour la version avec la variable c, en pressant F8, le c.row donne "1" et colle en colonne A,
alors qu'il devrait indiquer "7" pour coller dans la colonne où l'entête mentionne "juillet",
Merci pour tes lumières, et ta patience.
Cordialement
J@@
C devrait une cellule et non une colonne.
En définissant C as Range, tu pourrais utiliser :
Worksheets("Cible").Cells(2, c.row).PasteSpecial xlValues
Je te suggère une autre approche pour copier la valeur d'une plage de cellules vers une autre
destination qui est simple et rapide.
Nom des feuilles et des plages de cellules à adapter.
'--------------------------------
Sub test()
Dim T As Variant
With Worksheets("Feuil1")
'.Tu places les données du tableau dans une
'variable de type tableau
T = .Range("A1:A10").Value
End With
'Maintenant, tu peux copier le tableau T où tu veux
'comme ceci, aussi souvent que tu veux.
With Worksheets("Feuil2")
'Copie vers la plage B1:B10
.Range("B1").Resize(UBound(T, 1), UBound(T, 2)) = T
'Copie vers la plage G10:G19
.Range("G10").Resize(UBound(T, 1), UBound(T, 2)) = T
End With
Merci Denis **Pour la version avec Array : 1 - comment avoir plusieurs plages en Array qui se copieront à la suite l'une de l'autre : T = .Range("D10:D26", "E10:E26", "F10:F22").Value ' erreur 450 2 - la zone de copie est variable (c'était le but de mon c) c'est à dire que la copie se fait dans la colonne dont l'entête a le même contenu que la cellule D1 de la feuille Origine (j'ai 12 colonnes janvier à décembre en Cible). **Pour la version avec la variable c, en pressant F8, le c.row donne "1" et colle en colonne A, alors qu'il devrait indiquer "7" pour coller dans la colonne où l'entête mentionne "juillet", Merci pour tes lumières, et ta patience. Cordialement J@@ Le 20/12/2018 à 14:35, MichD a écrit :
Bonjour, La variable C devrait être de type Range Worksheets("Cible").Cells(2, c).PasteSpecial xlValues C devrait une cellule et non une colonne. En définissant C as Range, tu pourrais utiliser : Worksheets("Cible").Cells(2, c.row).PasteSpecial xlValues Je te suggère une autre approche pour copier la valeur d'une plage de cellules vers une autre destination qui est simple et rapide. Nom des feuilles et des plages de cellules à adapter. '-------------------------------- Sub test() Dim T As Variant With Worksheets("Feuil1") '.Tu places les données du tableau dans une 'variable de type tableau T = .Range("A1:A10").Value End With 'Maintenant, tu peux copier le tableau T où tu veux 'comme ceci, aussi souvent que tu veux. With Worksheets("Feuil2") 'Copie vers la plage B1:B10 .Range("B1").Resize(UBound(T, 1), UBound(T, 2)) = T 'Copie vers la plage G10:G19 .Range("G10").Resize(UBound(T, 1), UBound(T, 2)) = T End With End Sub '-------------------------------- MichD
MichD
Tu as changé la donne du problème: Un exemple de code, tu dois modifier le nom des feuilles et des plages de cellules s'il y a lieu. '--------------------------------------------------- Sub test() Dim Are As Range, Rg As Range, Mois As String Dim Col As Long, Dest As Range With Worksheets("Feuil1") 'Variable de type range qui regroupe les 3 plages de cellules. Set Rg = Union(.Range("D10:D26"), Range("E10:E26"), Range("F10:F22")) 'identifier le mois de D1 'je suppose qu'en D1, tu as un chiffre représentant le mois 'Mois contient le texte complet représentant le mois Mois = Format(DateSerial(2018, .Range("D1"), 1), "MMMM") End With 'Dans la feuille de destination 'identifier la colonne où se retrouve le "mois" dans la ligne 1 de la feuille With Worksheets("Feuil2") 'Si le mois recherché n'est pas sur la ligne 1, 'cette ligne de code provoque une erreur. 'le texte du moins c'est le nom complet du mois Col = Application.Match(Mois, .Rows(1).Cells, 1) 'Variable de type range désignant la cellule où débute la copie Set Dest = .Cells(2, Col) End With 'La copie des données dans la même colonne For Each Are In Rg.Columns Are.Copy Dest 'Dest= la cellule de destination 'Modifier la position de "Dest" pour la suite de la copie Set Dest = Dest.Offset(Are.Rows.Count) Next End Sub '--------------------------------------------------- MichD
Tu as changé la donne du problème:
Un exemple de code, tu dois modifier le nom des feuilles et
des plages de cellules s'il y a lieu.
'---------------------------------------------------
Sub test()
Dim Are As Range, Rg As Range, Mois As String
Dim Col As Long, Dest As Range
With Worksheets("Feuil1")
'Variable de type range qui regroupe les 3 plages de cellules.
Set Rg = Union(.Range("D10:D26"), Range("E10:E26"), Range("F10:F22"))
'identifier le mois de D1
'je suppose qu'en D1, tu as un chiffre représentant le mois
'Mois contient le texte complet représentant le mois
Mois = Format(DateSerial(2018, .Range("D1"), 1), "MMMM")
End With
'Dans la feuille de destination
'identifier la colonne où se retrouve le "mois" dans la ligne 1 de la
feuille
With Worksheets("Feuil2")
'Si le mois recherché n'est pas sur la ligne 1,
'cette ligne de code provoque une erreur.
'le texte du moins c'est le nom complet du mois
Col = Application.Match(Mois, .Rows(1).Cells, 1)
'Variable de type range désignant la cellule où débute la copie
Set Dest = .Cells(2, Col)
End With
'La copie des données dans la même colonne
For Each Are In Rg.Columns
Are.Copy Dest 'Dest= la cellule de destination
'Modifier la position de "Dest" pour la suite de la copie
Set Dest = Dest.Offset(Are.Rows.Count)
Next
End Sub
'---------------------------------------------------
Tu as changé la donne du problème: Un exemple de code, tu dois modifier le nom des feuilles et des plages de cellules s'il y a lieu. '--------------------------------------------------- Sub test() Dim Are As Range, Rg As Range, Mois As String Dim Col As Long, Dest As Range With Worksheets("Feuil1") 'Variable de type range qui regroupe les 3 plages de cellules. Set Rg = Union(.Range("D10:D26"), Range("E10:E26"), Range("F10:F22")) 'identifier le mois de D1 'je suppose qu'en D1, tu as un chiffre représentant le mois 'Mois contient le texte complet représentant le mois Mois = Format(DateSerial(2018, .Range("D1"), 1), "MMMM") End With 'Dans la feuille de destination 'identifier la colonne où se retrouve le "mois" dans la ligne 1 de la feuille With Worksheets("Feuil2") 'Si le mois recherché n'est pas sur la ligne 1, 'cette ligne de code provoque une erreur. 'le texte du moins c'est le nom complet du mois Col = Application.Match(Mois, .Rows(1).Cells, 1) 'Variable de type range désignant la cellule où débute la copie Set Dest = .Cells(2, Col) End With 'La copie des données dans la même colonne For Each Are In Rg.Columns Are.Copy Dest 'Dest= la cellule de destination 'Modifier la position de "Dest" pour la suite de la copie Set Dest = Dest.Offset(Are.Rows.Count) Next End Sub '--------------------------------------------------- MichD
MichD
Le 21/déc./2018 à 06:15, MichD a écrit :
Tu as changé la donne du problème: Un exemple de code, tu dois modifier le nom des feuilles et des plages de cellules s'il y a lieu. '--------------------------------------------------- Sub test() Dim Are As Range, Rg As Range, Mois As String Dim Col As Long, Dest As Range With Worksheets("Feuil1") 'Variable de type range qui regroupe les 3 plages de cellules. Set Rg = Union(.Range("D10:D26"), Range("E10:E26"), Range("F10:F22")) 'identifier le mois de D1 'je suppose qu'en D1, tu as un chiffre représentant le mois 'Mois contient le texte complet représentant le mois Mois = Format(DateSerial(2018, .Range("D1"), 1), "MMMM") End With 'Dans la feuille de destination 'identifier la colonne où se retrouve le "mois" dans la ligne 1 de la feuille With Worksheets("Feuil2") 'Si le mois recherché n'est pas sur la ligne 1, 'cette ligne de code provoque une erreur. 'le texte du moins c'est le nom complet du mois Col = Application.Match(Mois, .Rows(1).Cells, 1) 'Variable de type range désignant la cellule où débute la copie Set Dest = .Cells(2, Col) End With 'La copie des données dans la même colonne For Each Are In Rg.Columns Are.Copy Dest 'Dest= la cellule de destination 'Modifier la position de "Dest" pour la suite de la copie Set Dest = Dest.Offset(Are.Rows.Count) Next End Sub '--------------------------------------------------- MichD
Dans la dernière section de la procédure, si tu veux copier seulement les valeurs de la plage de cellules, change cette ligne de code Are.Copy Dest 'Dest= la cellule de destination Pour Dest.Resize(Are.Rows.Count) = Are.Value MichD
Le 21/déc./2018 à 06:15, MichD a écrit :
Tu as changé la donne du problème:
Un exemple de code, tu dois modifier le nom des feuilles et
des plages de cellules s'il y a lieu.
'---------------------------------------------------
Sub test()
Dim Are As Range, Rg As Range, Mois As String
Dim Col As Long, Dest As Range
With Worksheets("Feuil1")
'Variable de type range qui regroupe les 3 plages de cellules.
Set Rg = Union(.Range("D10:D26"), Range("E10:E26"), Range("F10:F22"))
'identifier le mois de D1
'je suppose qu'en D1, tu as un chiffre représentant le mois
'Mois contient le texte complet représentant le mois
Mois = Format(DateSerial(2018, .Range("D1"), 1), "MMMM")
End With
'Dans la feuille de destination
'identifier la colonne où se retrouve le "mois" dans la ligne 1 de la
feuille
With Worksheets("Feuil2")
'Si le mois recherché n'est pas sur la ligne 1,
'cette ligne de code provoque une erreur.
'le texte du moins c'est le nom complet du mois
Col = Application.Match(Mois, .Rows(1).Cells, 1)
'Variable de type range désignant la cellule où débute la copie
Set Dest = .Cells(2, Col)
End With
'La copie des données dans la même colonne
For Each Are In Rg.Columns
Are.Copy Dest 'Dest= la cellule de destination
'Modifier la position de "Dest" pour la suite de la copie
Set Dest = Dest.Offset(Are.Rows.Count)
Next
End Sub
'---------------------------------------------------
MichD
Dans la dernière section de la procédure, si tu veux copier seulement
les valeurs de la plage de cellules, change cette ligne de code
Tu as changé la donne du problème: Un exemple de code, tu dois modifier le nom des feuilles et des plages de cellules s'il y a lieu. '--------------------------------------------------- Sub test() Dim Are As Range, Rg As Range, Mois As String Dim Col As Long, Dest As Range With Worksheets("Feuil1") 'Variable de type range qui regroupe les 3 plages de cellules. Set Rg = Union(.Range("D10:D26"), Range("E10:E26"), Range("F10:F22")) 'identifier le mois de D1 'je suppose qu'en D1, tu as un chiffre représentant le mois 'Mois contient le texte complet représentant le mois Mois = Format(DateSerial(2018, .Range("D1"), 1), "MMMM") End With 'Dans la feuille de destination 'identifier la colonne où se retrouve le "mois" dans la ligne 1 de la feuille With Worksheets("Feuil2") 'Si le mois recherché n'est pas sur la ligne 1, 'cette ligne de code provoque une erreur. 'le texte du moins c'est le nom complet du mois Col = Application.Match(Mois, .Rows(1).Cells, 1) 'Variable de type range désignant la cellule où débute la copie Set Dest = .Cells(2, Col) End With 'La copie des données dans la même colonne For Each Are In Rg.Columns Are.Copy Dest 'Dest= la cellule de destination 'Modifier la position de "Dest" pour la suite de la copie Set Dest = Dest.Offset(Are.Rows.Count) Next End Sub '--------------------------------------------------- MichD
Dans la dernière section de la procédure, si tu veux copier seulement les valeurs de la plage de cellules, change cette ligne de code Are.Copy Dest 'Dest= la cellule de destination Pour Dest.Resize(Are.Rows.Count) = Are.Value MichD
Jarobasearobase
Bonjour Denis Merci pour ta réponse. 1 - J'ai une erreur 13 "incompatibilité de type" sur la ligne Mois = Format(DateSerial(2018, .Range("D1"), 1), "MMMM") Les "Mois" sont seulement du texte, au format standard, ils n'ont pas de fonction de calcul. //PS: je suis sous Excel 2003 ... désolé d'avoir oublier de le préciser// Merci pour ton aide Cordialement J@@ Le 21/12/2018 à 01:15, MichD a écrit :
Tu as changé la donne du problème: '--------------------------------------------------- Sub test() Dim Are As Range, Rg As Range, Mois As String Dim Col As Long, Dest As Range With Worksheets("Feuil1") 'Variable de type range qui regroupe les 3 plages de cellules. Set Rg = Union(.Range("D10:D26"), .Range("E10:E26"), .Range("F10:F22")) 'identifier le mois de D1 'je suppose qu'en D1, tu as un chiffre représentant le mois 'Mois contient le texte complet représentant le mois Mois = Format(DateSerial(2018, .Range("D1"), 1), "MMMM") End With 'Dans la feuille de destination 'identifier la colonne où se retrouve le "mois" dans la ligne 1 de la feuille With Worksheets("Feuil2") 'Si le mois recherché n'est pas sur la ligne 1, 'cette ligne de code provoque une erreur. 'le texte du moins c'est le nom complet du mois Col = Application.Match(Mois, .Rows(1).Cells, 1) 'Variable de type range désignant la cellule où débute la copie Set Dest = .Cells(2, Col) End With 'La copie des données dans la même colonne For Each Are In Rg.Columns Are.Copy Dest 'Dest= la cellule de destination 'Modifier la position de "Dest" pour la suite de la copie Set Dest = Dest.Resize(Are.Rows.Count) = Are.Value 'modifié pour copie valeur Next End Sub '--------------------------------------------------- MichD
Bonjour Denis
Merci pour ta réponse.
1 - J'ai une erreur 13 "incompatibilité de type" sur la ligne
Mois = Format(DateSerial(2018, .Range("D1"), 1), "MMMM")
Les "Mois" sont seulement du texte, au format standard, ils n'ont pas de fonction de calcul.
//PS: je suis sous Excel 2003 ... désolé d'avoir oublier de le préciser//
Merci pour ton aide
Cordialement
J@@
Le 21/12/2018 à 01:15, MichD a écrit :
Tu as changé la donne du problème:
'---------------------------------------------------
Sub test()
Dim Are As Range, Rg As Range, Mois As String
Dim Col As Long, Dest As Range
With Worksheets("Feuil1")
'Variable de type range qui regroupe les 3 plages de cellules.
Set Rg = Union(.Range("D10:D26"), .Range("E10:E26"), .Range("F10:F22"))
'identifier le mois de D1
'je suppose qu'en D1, tu as un chiffre représentant le mois
'Mois contient le texte complet représentant le mois
Mois = Format(DateSerial(2018, .Range("D1"), 1), "MMMM")
End With
'Dans la feuille de destination
'identifier la colonne où se retrouve le "mois" dans la ligne 1 de la feuille
With Worksheets("Feuil2")
'Si le mois recherché n'est pas sur la ligne 1,
'cette ligne de code provoque une erreur.
'le texte du moins c'est le nom complet du mois
Col = Application.Match(Mois, .Rows(1).Cells, 1)
'Variable de type range désignant la cellule où débute la copie
Set Dest = .Cells(2, Col)
End With
'La copie des données dans la même colonne
For Each Are In Rg.Columns
Are.Copy Dest 'Dest= la cellule de destination
'Modifier la position de "Dest" pour la suite de la copie
Set Dest = Dest.Resize(Are.Rows.Count) = Are.Value 'modifié pour copie valeur
Next
End Sub
'---------------------------------------------------
Bonjour Denis Merci pour ta réponse. 1 - J'ai une erreur 13 "incompatibilité de type" sur la ligne Mois = Format(DateSerial(2018, .Range("D1"), 1), "MMMM") Les "Mois" sont seulement du texte, au format standard, ils n'ont pas de fonction de calcul. //PS: je suis sous Excel 2003 ... désolé d'avoir oublier de le préciser// Merci pour ton aide Cordialement J@@ Le 21/12/2018 à 01:15, MichD a écrit :
Tu as changé la donne du problème: '--------------------------------------------------- Sub test() Dim Are As Range, Rg As Range, Mois As String Dim Col As Long, Dest As Range With Worksheets("Feuil1") 'Variable de type range qui regroupe les 3 plages de cellules. Set Rg = Union(.Range("D10:D26"), .Range("E10:E26"), .Range("F10:F22")) 'identifier le mois de D1 'je suppose qu'en D1, tu as un chiffre représentant le mois 'Mois contient le texte complet représentant le mois Mois = Format(DateSerial(2018, .Range("D1"), 1), "MMMM") End With 'Dans la feuille de destination 'identifier la colonne où se retrouve le "mois" dans la ligne 1 de la feuille With Worksheets("Feuil2") 'Si le mois recherché n'est pas sur la ligne 1, 'cette ligne de code provoque une erreur. 'le texte du moins c'est le nom complet du mois Col = Application.Match(Mois, .Rows(1).Cells, 1) 'Variable de type range désignant la cellule où débute la copie Set Dest = .Cells(2, Col) End With 'La copie des données dans la même colonne For Each Are In Rg.Columns Are.Copy Dest 'Dest= la cellule de destination 'Modifier la position de "Dest" pour la suite de la copie Set Dest = Dest.Resize(Are.Rows.Count) = Are.Value 'modifié pour copie valeur Next End Sub '--------------------------------------------------- MichD
Jacquouille
Ah, au moins un frère. Et frère Jacques, si je ne m'abuse. -)) Jacques " Le vin est au repas ce que le parfum est à la femme." . "Jarobasearobase" a écrit dans le message de groupe de discussion : pvj66c$17p6$ Bonjour Denis Merci pour ta réponse. //PS: je suis sous Excel 2003 ... désolé d'avoir oublier de le préciser// Merci pour ton aide Cordialement J@@
Ah, au moins un frère.
Et frère Jacques, si je ne m'abuse. -))
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Jarobasearobase" a écrit dans le message de groupe de discussion :
pvj66c$17p6$1@gioia.aioe.org...
Bonjour Denis
Merci pour ta réponse.
//PS: je suis sous Excel 2003 ... désolé d'avoir oublier de le préciser//
Ah, au moins un frère. Et frère Jacques, si je ne m'abuse. -)) Jacques " Le vin est au repas ce que le parfum est à la femme." . "Jarobasearobase" a écrit dans le message de groupe de discussion : pvj66c$17p6$ Bonjour Denis Merci pour ta réponse. //PS: je suis sous Excel 2003 ... désolé d'avoir oublier de le préciser// Merci pour ton aide Cordialement J@@
MichD
Le 21/déc./2018 à 11:59, Jarobasearobase a écrit :
Bonjour Denis Merci pour ta réponse. 1 - J'ai une erreur 13 "incompatibilité de type" sur la ligne Mois = Format(DateSerial(2018, .Range("D1"), 1), "MMMM") Les "Mois" sont seulement du texte, au format standard, ils n'ont pas de fonction de calcul.
Qu'est-ce que tu as dans la cellule D1 ? Le chiffre représentant le mois de 1 à 12 Une date particulière 21/12/2018 ou le texte représentant ledit mois "Décembre" par exemple. MichD
Le 21/déc./2018 à 11:59, Jarobasearobase a écrit :
Bonjour Denis
Merci pour ta réponse.
1 - J'ai une erreur 13 "incompatibilité de type" sur la ligne
Mois = Format(DateSerial(2018, .Range("D1"), 1), "MMMM")
Les "Mois" sont seulement du texte, au format standard, ils n'ont pas de
fonction de calcul.
Qu'est-ce que tu as dans la cellule D1 ?
Le chiffre représentant le mois de 1 à 12
Une date particulière 21/12/2018
ou le texte représentant ledit mois "Décembre" par exemple.
Le 21/déc./2018 à 11:59, Jarobasearobase a écrit :
Bonjour Denis Merci pour ta réponse. 1 - J'ai une erreur 13 "incompatibilité de type" sur la ligne Mois = Format(DateSerial(2018, .Range("D1"), 1), "MMMM") Les "Mois" sont seulement du texte, au format standard, ils n'ont pas de fonction de calcul.
Qu'est-ce que tu as dans la cellule D1 ? Le chiffre représentant le mois de 1 à 12 Une date particulière 21/12/2018 ou le texte représentant ledit mois "Décembre" par exemple. MichD
Jarobasearobase
:-) Toi aussi, un vrai fidèle à Excel 2003 ! voire au mpfe. J@@ Le 21/12/2018 à 07:21, Jacquouille a écrit :
Ah, au moins un frère. Et frère Jacques, si je ne m'abuse. -)) Jacques " Le vin est au repas ce que le parfum est à la femme." . "Jarobasearobase" a écrit dans le message de groupe de discussion : pvj66c$17p6$ Bonjour Denis Merci pour ta réponse. //PS: je suis sous Excel 2003 ... désolé d'avoir oublier de le préciser// Merci pour ton aide Cordialement J@@
:-)
Toi aussi, un vrai fidèle à Excel 2003 ! voire au mpfe.
J@@
Le 21/12/2018 à 07:21, Jacquouille a écrit :
Ah, au moins un frère.
Et frère Jacques, si je ne m'abuse. -))
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Jarobasearobase" a écrit dans le message de groupe de discussion : pvj66c$17p6$1@gioia.aioe.org...
Bonjour Denis
Merci pour ta réponse.
//PS: je suis sous Excel 2003 ... désolé d'avoir oublier de le préciser//
:-) Toi aussi, un vrai fidèle à Excel 2003 ! voire au mpfe. J@@ Le 21/12/2018 à 07:21, Jacquouille a écrit :
Ah, au moins un frère. Et frère Jacques, si je ne m'abuse. -)) Jacques " Le vin est au repas ce que le parfum est à la femme." . "Jarobasearobase" a écrit dans le message de groupe de discussion : pvj66c$17p6$ Bonjour Denis Merci pour ta réponse. //PS: je suis sous Excel 2003 ... désolé d'avoir oublier de le préciser// Merci pour ton aide Cordialement J@@
MichD
La procédure a été modifiée : '--------------------------------------------------- Sub test() Dim Are As Range, Rg As Range, Mois As String Dim Col As Long, Dest As Range With Worksheets("Feuil1") 'Variable de type range qui regroupe les 3 plages de cellules. Set Rg = Union(.Range("D10:D26"), Range("E10:E26"), Range("F10:F22")) 'identifier le mois de D1 'je suppose qu'en D1, tu as un chiffre représentant le mois 'Mois contient le texte complet représentant le mois Mois = .Range("D1") End With 'Dans la feuille de destination 'identifier la colonne où se retrouve le "mois" dans la ligne 1 de la feuille With Worksheets("Feuil2") 'Si le mois recherché n'est pas sur la ligne 1, 'cette ligne de code provoque une erreur. 'le texte du moins c'est le nom complet du mois Col = Application.Match(Mois, .Rows(1).Cells, 1) 'Variable de type range désignant la cellule où débute la copie Set Dest = .Cells(2, Col) End With 'La copie des données dans la même colonne For Each Are In Rg.Columns Are.Copy Dest 'Dest= la cellule de destination 'Modifier la position de "Dest" pour la suite de la copie Set Dest = Dest.Offset(Are.Rows.Count) Next End Sub '--------------------------------------------------- MichD
La procédure a été modifiée :
'---------------------------------------------------
Sub test()
Dim Are As Range, Rg As Range, Mois As String
Dim Col As Long, Dest As Range
With Worksheets("Feuil1")
'Variable de type range qui regroupe les 3 plages de cellules.
Set Rg = Union(.Range("D10:D26"), Range("E10:E26"), Range("F10:F22"))
'identifier le mois de D1
'je suppose qu'en D1, tu as un chiffre représentant le mois
'Mois contient le texte complet représentant le mois
Mois = .Range("D1")
End With
'Dans la feuille de destination
'identifier la colonne où se retrouve le "mois" dans la ligne 1 de la
feuille
With Worksheets("Feuil2")
'Si le mois recherché n'est pas sur la ligne 1,
'cette ligne de code provoque une erreur.
'le texte du moins c'est le nom complet du mois
Col = Application.Match(Mois, .Rows(1).Cells, 1)
'Variable de type range désignant la cellule où débute la copie
Set Dest = .Cells(2, Col)
End With
'La copie des données dans la même colonne
For Each Are In Rg.Columns
Are.Copy Dest 'Dest= la cellule de destination
'Modifier la position de "Dest" pour la suite de la copie
Set Dest = Dest.Offset(Are.Rows.Count)
Next
End Sub
'---------------------------------------------------
La procédure a été modifiée : '--------------------------------------------------- Sub test() Dim Are As Range, Rg As Range, Mois As String Dim Col As Long, Dest As Range With Worksheets("Feuil1") 'Variable de type range qui regroupe les 3 plages de cellules. Set Rg = Union(.Range("D10:D26"), Range("E10:E26"), Range("F10:F22")) 'identifier le mois de D1 'je suppose qu'en D1, tu as un chiffre représentant le mois 'Mois contient le texte complet représentant le mois Mois = .Range("D1") End With 'Dans la feuille de destination 'identifier la colonne où se retrouve le "mois" dans la ligne 1 de la feuille With Worksheets("Feuil2") 'Si le mois recherché n'est pas sur la ligne 1, 'cette ligne de code provoque une erreur. 'le texte du moins c'est le nom complet du mois Col = Application.Match(Mois, .Rows(1).Cells, 1) 'Variable de type range désignant la cellule où débute la copie Set Dest = .Cells(2, Col) End With 'La copie des données dans la même colonne For Each Are In Rg.Columns Are.Copy Dest 'Dest= la cellule de destination 'Modifier la position de "Dest" pour la suite de la copie Set Dest = Dest.Offset(Are.Rows.Count) Next End Sub '--------------------------------------------------- MichD