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
MichD
Le 21/déc./2018 à 12:59, Jarobasearobase a écrit :
Juste du texte en D1. "Décembre" par exemple obtenue d'une liste de choix en texte J@@ Le 21/12/2018 à 07:45, MichD a écrit :
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
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
Le 21/déc./2018 à 12:59, Jarobasearobase a écrit :
Juste du texte en D1. "Décembre" par exemple obtenue d'une liste de
choix en texte
J@@
Le 21/12/2018 à 07:45, MichD a écrit :
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
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
'---------------------------------------------------
Le 21/déc./2018 à 12:59, Jarobasearobase a écrit :
Juste du texte en D1. "Décembre" par exemple obtenue d'une liste de choix en texte J@@ Le 21/12/2018 à 07:45, MichD a écrit :
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
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
Jarobasearobase
Ca marche parfaitement. Un grand merci à toi, Denis, toujours aussi efficace. Joyeuses Fêtes, et salutations à la Belle Province ! J@@ Le 21/12/2018 à 08:06, MichD a écrit :
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
Ca marche parfaitement.
Un grand merci à toi, Denis, toujours aussi efficace.
Joyeuses Fêtes,
et salutations à la Belle Province !
J@@
Le 21/12/2018 à 08:06, MichD a écrit :
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
'---------------------------------------------------
Ca marche parfaitement. Un grand merci à toi, Denis, toujours aussi efficace. Joyeuses Fêtes, et salutations à la Belle Province ! J@@ Le 21/12/2018 à 08:06, MichD a écrit :
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
Jarobasearobase
Encore un point, Denis, si tu le permets : Tout va bien sauf erreur 13 (incompatibilité de type) pour la copie "valeur seule" sur la ligne Set Dest = Dest.Resize(Are.Rows.Count) = Are.Value *le collage "complet" est parfait avec Set Dest = Dest.Offset(Are.Rows.Count) AS-tu une idée ? Merci J@@ (excel 2003) Le 21/12/2018 à 08:06, MichD a écrit :
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
Encore un point, Denis, si tu le permets :
Tout va bien sauf erreur 13 (incompatibilité de type) pour la copie "valeur seule" sur la ligne
Set Dest = Dest.Resize(Are.Rows.Count) = Are.Value
*le collage "complet" est parfait avec
Set Dest = Dest.Offset(Are.Rows.Count)
AS-tu une idée ?
Merci
J@@ (excel 2003)
Le 21/12/2018 à 08:06, MichD a écrit :
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
'---------------------------------------------------
Encore un point, Denis, si tu le permets : Tout va bien sauf erreur 13 (incompatibilité de type) pour la copie "valeur seule" sur la ligne Set Dest = Dest.Resize(Are.Rows.Count) = Are.Value *le collage "complet" est parfait avec Set Dest = Dest.Offset(Are.Rows.Count) AS-tu une idée ? Merci J@@ (excel 2003) Le 21/12/2018 à 08:06, MichD a écrit :
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
MichD
Au lieu de ceci : Set Dest = Dest.Resize(Are.Rows.Count) = Are.Value Ce devrait être cela : Dest.Resize(Are.Rows.Count) = Are.Value Il faut effacer : Set Dest MichD
Au lieu de ceci :
Set Dest = Dest.Resize(Are.Rows.Count) = Are.Value
Au lieu de ceci : Set Dest = Dest.Resize(Are.Rows.Count) = Are.Value Ce devrait être cela : Dest.Resize(Are.Rows.Count) = Are.Value Il faut effacer : Set Dest MichD
Jarobasearobase
C'est bizarre, le code avait fonctionné, mais maintenant j'ai une erreur 13 sur Col = Application.Match(Mois, .Rows(1).Cells, 1) J@@ Le 21/12/2018 à 09:06, MichD a écrit :
Au lieu de ceci : Set Dest = Dest.Resize(Are.Rows.Count) = Are.Value Ce devrait être cela : Dest.Resize(Are.Rows.Count) = Are.Value Il faut effacer : Set Dest > MichD
C'est bizarre, le code avait fonctionné,
mais maintenant j'ai une erreur 13 sur
Col = Application.Match(Mois, .Rows(1).Cells, 1)
J@@
Le 21/12/2018 à 09:06, MichD a écrit :
Au lieu de ceci :
Set Dest = Dest.Resize(Are.Rows.Count) = Are.Value
C'est bizarre, le code avait fonctionné, mais maintenant j'ai une erreur 13 sur Col = Application.Match(Mois, .Rows(1).Cells, 1) J@@ Le 21/12/2018 à 09:06, MichD a écrit :
Au lieu de ceci : Set Dest = Dest.Resize(Are.Rows.Count) = Are.Value Ce devrait être cela : Dest.Resize(Are.Rows.Count) = Are.Value Il faut effacer : Set Dest > MichD
MichD
Le 21/déc./2018 à 14:56, Jarobasearobase a écrit :
C'est bizarre, le code avait fonctionné, mais maintenant j'ai une erreur 13 sur Col = Application.Match(Mois, .Rows(1).Cells, 1)
Bonjour, ici, un fichier exemple : https://www.cjoint.com/c/HLvufIXEcni Est-ce qu'en D1, tu as un nom de mois? Est-ce que dans l'autre feuille ce nom est présent, écrit de la même manière? Une erreur de type 13 ressemble à ceci : Dim S As Long S = "toto" Le type de la variable étant défini comme une valeur numérique (Long), si j'essaie d'y insérer une valeur texte, j'obtiens une erreur 13. Moi, je ne peux pas faire plus. MichD
Le 21/déc./2018 à 14:56, Jarobasearobase a écrit :
C'est bizarre, le code avait fonctionné,
mais maintenant j'ai une erreur 13 sur
Col = Application.Match(Mois, .Rows(1).Cells, 1)
Bonjour,
ici, un fichier exemple :
https://www.cjoint.com/c/HLvufIXEcni
Est-ce qu'en D1, tu as un nom de mois?
Est-ce que dans l'autre feuille ce nom est présent, écrit de la même
manière?
Une erreur de type 13 ressemble à ceci :
Dim S As Long
S = "toto"
Le type de la variable étant défini comme une valeur numérique (Long),
si j'essaie d'y insérer une valeur texte, j'obtiens une erreur 13.
Le 21/déc./2018 à 14:56, Jarobasearobase a écrit :
C'est bizarre, le code avait fonctionné, mais maintenant j'ai une erreur 13 sur Col = Application.Match(Mois, .Rows(1).Cells, 1)
Bonjour, ici, un fichier exemple : https://www.cjoint.com/c/HLvufIXEcni Est-ce qu'en D1, tu as un nom de mois? Est-ce que dans l'autre feuille ce nom est présent, écrit de la même manière? Une erreur de type 13 ressemble à ceci : Dim S As Long S = "toto" Le type de la variable étant défini comme une valeur numérique (Long), si j'essaie d'y insérer une valeur texte, j'obtiens une erreur 13. Moi, je ne peux pas faire plus. MichD
Jarobasearobase
Vraiment bizarre la ligne Col = Application.Match(Mois, .Rows(1).Cells, 1) n'est plus en erreur, sans action de ma part, fermeture excel, redémarrage, débogage. Mais le résultat est étrange : janvier ok (en colonne D février en colonne B mars en colonne K (août) avril en colonne A mai ok juin en col B juillet rien de copié août en colonne C octobre rien de copié novembre rien de copié décembre en colonne c Le code testé: '--------------------------------------------------- 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) ' Dest.Resize(Are.Rows.Count) = Are.Value Next End Sub '---------------------------------------------------
Vraiment bizarre
la ligne Col = Application.Match(Mois, .Rows(1).Cells, 1)
n'est plus en erreur, sans action de ma part, fermeture excel, redémarrage, débogage.
Mais le résultat est étrange :
janvier ok (en colonne D
février en colonne B
mars en colonne K (août)
avril en colonne A
mai ok
juin en col B
juillet rien de copié
août en colonne C
octobre rien de copié
novembre rien de copié
décembre en colonne c
Le code testé:
'---------------------------------------------------
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)
' Dest.Resize(Are.Rows.Count) = Are.Value
Next
End Sub
'---------------------------------------------------
Vraiment bizarre la ligne Col = Application.Match(Mois, .Rows(1).Cells, 1) n'est plus en erreur, sans action de ma part, fermeture excel, redémarrage, débogage. Mais le résultat est étrange : janvier ok (en colonne D février en colonne B mars en colonne K (août) avril en colonne A mai ok juin en col B juillet rien de copié août en colonne C octobre rien de copié novembre rien de copié décembre en colonne c Le code testé: '--------------------------------------------------- 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) ' Dest.Resize(Are.Rows.Count) = Are.Value Next End Sub '---------------------------------------------------
Jarobasearobase
Ton fichier complété exactement comme le mien. Résultats bizarres. https://www.cjoint.com/c/HLvuVOf0ylk La seule différence est que ton code est dans la feuille, le mien dans un module std,mais cela ne pose sans doute pas de problème. Merci pour ta patience J@@
ici, un fichier exemple : https://www.cjoint.com/c/HLvufIXEcni Est-ce qu'en D1, tu as un nom de mois? Est-ce que dans l'autre feuille ce nom est présent, écrit de la même manière? Une erreur de type 13 ressemble à ceci : Dim S As Long S = "toto" Le type de la variable étant défini comme une valeur numérique (Long), si j'essaie d'y insérer une valeur texte, j'obtiens une erreur 13. Moi, je ne peux pas faire plus. MichD
Ton fichier complété exactement comme le mien. Résultats bizarres.
https://www.cjoint.com/c/HLvuVOf0ylk
La seule différence est que ton code est dans la feuille, le mien dans un module std,mais cela ne
pose sans doute pas de problème.
Merci pour ta patience
J@@
ici, un fichier exemple :
https://www.cjoint.com/c/HLvufIXEcni
Est-ce qu'en D1, tu as un nom de mois?
Est-ce que dans l'autre feuille ce nom est présent, écrit de la même manière?
Une erreur de type 13 ressemble à ceci :
Dim S As Long
S = "toto"
Le type de la variable étant défini comme une valeur numérique (Long), si j'essaie d'y insérer une
valeur texte, j'obtiens une erreur 13.
Ton fichier complété exactement comme le mien. Résultats bizarres. https://www.cjoint.com/c/HLvuVOf0ylk La seule différence est que ton code est dans la feuille, le mien dans un module std,mais cela ne pose sans doute pas de problème. Merci pour ta patience J@@
ici, un fichier exemple : https://www.cjoint.com/c/HLvufIXEcni Est-ce qu'en D1, tu as un nom de mois? Est-ce que dans l'autre feuille ce nom est présent, écrit de la même manière? Une erreur de type 13 ressemble à ceci : Dim S As Long S = "toto" Le type de la variable étant défini comme une valeur numérique (Long), si j'essaie d'y insérer une valeur texte, j'obtiens une erreur 13. Moi, je ne peux pas faire plus. MichD
MichD
Dans cette ligne de code : Col = Application.Match(Mois, .Rows(1).Cells, 1) Modifie le 1 pour un 0, probablement une erreur de frappe! MichD
Dans cette ligne de code :
Col = Application.Match(Mois, .Rows(1).Cells, 1)
Modifie le 1 pour un 0, probablement une erreur de frappe!