J'ai deux codes quasi identiques; l'un marche, l'autre non.
Les seules diff=E9rences consistent en changement de colonne source et
de colonne destination.
- Le code qui marche :
Sub copier()
Dim Source As Range, Dest As Range
Set Source =3D Worksheets("feuil1").Range("a:a")
Set Dest =3D Worksheets("feuil2").Range("a1")
For Each C In Source
If InStr(1, C.Value, "pl", vbTextCompare) > 0 Then
C.EntireRow.Copy Dest.Offset(A)
A =3D A + 1
End If
Next
Set Source =3D Nothing: Set Dest =3D Nothing
End Sub
- Le code qui ne marche pas :
Sub copier()
Dim Source As Range, Dest As Range
Set Source =3D Worksheets("feuil1").Range("H:H")
Set Dest =3D Worksheets("feuil2").Range("H1")
For Each C In Source
If InStr(1, C.Value, "pl", vbTextCompare) > 0 Then
C.EntireRow.Copy Dest.Offset(H)
H =3D H + 1
End If
Next
Set Source =3D Nothing: Set Dest =3D Nothing
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichD
Bonjour,
Dans la première procédure : C.EntireRow.Copy Dest.Offset(A) Le A représente une variable débutant à 0 et s'incrémentant à la ligne A = A+1 à chaque boucle que fait la procédure. En fait ce "A" fait déplacer la copie d'une ligne inférieure pour chacune des valeurs. Un point important, la copie de la ligne se fait dans la feuille de destination à partir de la colonne A:A
Dans la deuxième procédure, | C.EntireRow.Copy Dest.Offset(H) La copie de la ligne entière débute en colonne H Tu ne peux pas copier une ligne de 256 colonnes (lignes entières) vers une destination débutant en colonne H . Il manque 8 colonnes à la ligne pour que la copie puisse s'effectuer.
Une façon de contourner la chose est d'écrire cette ligne comme ceci : C.EntireRow.Copy Dest.Offset(H,-7) Le -7 indique un déplacement de 7 colonnes vers la gauche, c'est-à-dire jusqu'en A. Dès lors, tu auras 256 colonnes dans ta feuille source qui se copiera dans 256 colonnes de ta feuille destination, et tout le monde sera heureux.
MichD -------------------------------------------- "arissam" a écrit dans le message de groupe de discussion :
Bonjour :
J'ai deux codes quasi identiques; l'un marche, l'autre non. Les seules différences consistent en changement de colonne source et de colonne destination. - Le code qui marche :
Sub copier() Dim Source As Range, Dest As Range Set Source = Worksheets("feuil1").Range("a:a") Set Dest = Worksheets("feuil2").Range("a1")
For Each C In Source If InStr(1, C.Value, "pl", vbTextCompare) > 0 Then C.EntireRow.Copy Dest.Offset(A) A = A + 1
End If Next Set Source = Nothing: Set Dest = Nothing End Sub
- Le code qui ne marche pas :
Sub copier() Dim Source As Range, Dest As Range Set Source = Worksheets("feuil1").Range("H:H")
Set Dest = Worksheets("feuil2").Range("H1")
For Each C In Source If InStr(1, C.Value, "pl", vbTextCompare) > 0 Then C.EntireRow.Copy Dest.Offset(H) H = H + 1
End If Next Set Source = Nothing: Set Dest = Nothing End Sub
Merci pour toute explication donnée.
Bonjour,
Dans la première procédure :
C.EntireRow.Copy Dest.Offset(A)
Le A représente une variable débutant à 0 et s'incrémentant
à la ligne A = A+1 à chaque boucle que fait la procédure. En fait
ce "A" fait déplacer la copie d'une ligne inférieure pour chacune des
valeurs. Un point important, la copie de la ligne se fait dans la feuille
de destination à partir de la colonne A:A
Dans la deuxième procédure,
| C.EntireRow.Copy Dest.Offset(H)
La copie de la ligne entière débute en colonne H
Tu ne peux pas copier une ligne de 256 colonnes (lignes entières)
vers une destination débutant en colonne H . Il manque 8 colonnes
à la ligne pour que la copie puisse s'effectuer.
Une façon de contourner la chose est d'écrire cette ligne comme ceci :
C.EntireRow.Copy Dest.Offset(H,-7)
Le -7 indique un déplacement de 7 colonnes vers la gauche, c'est-à-dire
jusqu'en A. Dès lors, tu auras 256 colonnes dans ta feuille source qui se
copiera dans 256 colonnes de ta feuille destination, et tout le monde sera
heureux.
MichD
--------------------------------------------
"arissam" a écrit dans le message de groupe de discussion :
7a172b4a-25d8-4479-9769-43538d839a10@x37g2000prb.googlegroups.com...
Bonjour :
J'ai deux codes quasi identiques; l'un marche, l'autre non.
Les seules différences consistent en changement de colonne source et
de colonne destination.
- Le code qui marche :
Sub copier()
Dim Source As Range, Dest As Range
Set Source = Worksheets("feuil1").Range("a:a")
Set Dest = Worksheets("feuil2").Range("a1")
For Each C In Source
If InStr(1, C.Value, "pl", vbTextCompare) > 0 Then
C.EntireRow.Copy Dest.Offset(A)
A = A + 1
End If
Next
Set Source = Nothing: Set Dest = Nothing
End Sub
- Le code qui ne marche pas :
Sub copier()
Dim Source As Range, Dest As Range
Set Source = Worksheets("feuil1").Range("H:H")
Set Dest = Worksheets("feuil2").Range("H1")
For Each C In Source
If InStr(1, C.Value, "pl", vbTextCompare) > 0 Then
C.EntireRow.Copy Dest.Offset(H)
H = H + 1
End If
Next
Set Source = Nothing: Set Dest = Nothing
End Sub
Dans la première procédure : C.EntireRow.Copy Dest.Offset(A) Le A représente une variable débutant à 0 et s'incrémentant à la ligne A = A+1 à chaque boucle que fait la procédure. En fait ce "A" fait déplacer la copie d'une ligne inférieure pour chacune des valeurs. Un point important, la copie de la ligne se fait dans la feuille de destination à partir de la colonne A:A
Dans la deuxième procédure, | C.EntireRow.Copy Dest.Offset(H) La copie de la ligne entière débute en colonne H Tu ne peux pas copier une ligne de 256 colonnes (lignes entières) vers une destination débutant en colonne H . Il manque 8 colonnes à la ligne pour que la copie puisse s'effectuer.
Une façon de contourner la chose est d'écrire cette ligne comme ceci : C.EntireRow.Copy Dest.Offset(H,-7) Le -7 indique un déplacement de 7 colonnes vers la gauche, c'est-à-dire jusqu'en A. Dès lors, tu auras 256 colonnes dans ta feuille source qui se copiera dans 256 colonnes de ta feuille destination, et tout le monde sera heureux.
MichD -------------------------------------------- "arissam" a écrit dans le message de groupe de discussion :
Bonjour :
J'ai deux codes quasi identiques; l'un marche, l'autre non. Les seules différences consistent en changement de colonne source et de colonne destination. - Le code qui marche :
Sub copier() Dim Source As Range, Dest As Range Set Source = Worksheets("feuil1").Range("a:a") Set Dest = Worksheets("feuil2").Range("a1")
For Each C In Source If InStr(1, C.Value, "pl", vbTextCompare) > 0 Then C.EntireRow.Copy Dest.Offset(A) A = A + 1
End If Next Set Source = Nothing: Set Dest = Nothing End Sub
- Le code qui ne marche pas :
Sub copier() Dim Source As Range, Dest As Range Set Source = Worksheets("feuil1").Range("H:H")
Set Dest = Worksheets("feuil2").Range("H1")
For Each C In Source If InStr(1, C.Value, "pl", vbTextCompare) > 0 Then C.EntireRow.Copy Dest.Offset(H) H = H + 1
End If Next Set Source = Nothing: Set Dest = Nothing End Sub
Merci pour toute explication donnée.
MichD
Si tu veux que la copie débute en colonne H dans la feuille de destination
Tu peux utiliser cette ligne de code : Dim NbColonnes As Integer NbColonnes représente le nombre de colonnes de la feuille source que tu veux copier incluant la colonne A à chaque boucle
La variable NbColonnes ne peut pas être plus grande que 248 soit 256 colonnes - 8 (représentée par la colonne H)
c.resize(,NbColonnes).Copy Dest.Offset(H)
MichD -------------------------------------------- "MichD" a écrit dans le message de groupe de discussion : ionigj$9gb$
Bonjour,
Dans la première procédure : C.EntireRow.Copy Dest.Offset(A) Le A représente une variable débutant à 0 et s'incrémentant à la ligne A = A+1 à chaque boucle que fait la procédure. En fait ce "A" fait déplacer la copie d'une ligne inférieure pour chacune des valeurs. Un point important, la copie de la ligne se fait dans la feuille de destination à partir de la colonne A:A
Dans la deuxième procédure, | C.EntireRow.Copy Dest.Offset(H) La copie de la ligne entière débute en colonne H Tu ne peux pas copier une ligne de 256 colonnes (lignes entières) vers une destination débutant en colonne H . Il manque 8 colonnes à la ligne pour que la copie puisse s'effectuer.
Une façon de contourner la chose est d'écrire cette ligne comme ceci : C.EntireRow.Copy Dest.Offset(H,-7) Le -7 indique un déplacement de 7 colonnes vers la gauche, c'est-à-dire jusqu'en A. Dès lors, tu auras 256 colonnes dans ta feuille source qui se copiera dans 256 colonnes de ta feuille destination, et tout le monde sera heureux.
MichD -------------------------------------------- "arissam" a écrit dans le message de groupe de discussion :
Bonjour :
J'ai deux codes quasi identiques; l'un marche, l'autre non. Les seules différences consistent en changement de colonne source et de colonne destination. - Le code qui marche :
Sub copier() Dim Source As Range, Dest As Range Set Source = Worksheets("feuil1").Range("a:a") Set Dest = Worksheets("feuil2").Range("a1")
For Each C In Source If InStr(1, C.Value, "pl", vbTextCompare) > 0 Then C.EntireRow.Copy Dest.Offset(A) A = A + 1
End If Next Set Source = Nothing: Set Dest = Nothing End Sub
- Le code qui ne marche pas :
Sub copier() Dim Source As Range, Dest As Range Set Source = Worksheets("feuil1").Range("H:H")
Set Dest = Worksheets("feuil2").Range("H1")
For Each C In Source If InStr(1, C.Value, "pl", vbTextCompare) > 0 Then C.EntireRow.Copy Dest.Offset(H) H = H + 1
End If Next Set Source = Nothing: Set Dest = Nothing End Sub
Merci pour toute explication donnée.
Si tu veux que la copie débute en colonne H dans la feuille de destination
Tu peux utiliser cette ligne de code :
Dim NbColonnes As Integer
NbColonnes représente le nombre de colonnes de la feuille source que
tu veux copier incluant la colonne A à chaque boucle
La variable NbColonnes ne peut pas être plus grande que 248
soit 256 colonnes - 8 (représentée par la colonne H)
c.resize(,NbColonnes).Copy Dest.Offset(H)
MichD
--------------------------------------------
"MichD" a écrit dans le message de groupe de discussion : ionigj$9gb$1@speranza.aioe.org...
Bonjour,
Dans la première procédure :
C.EntireRow.Copy Dest.Offset(A)
Le A représente une variable débutant à 0 et s'incrémentant
à la ligne A = A+1 à chaque boucle que fait la procédure. En fait
ce "A" fait déplacer la copie d'une ligne inférieure pour chacune des
valeurs. Un point important, la copie de la ligne se fait dans la feuille
de destination à partir de la colonne A:A
Dans la deuxième procédure,
| C.EntireRow.Copy Dest.Offset(H)
La copie de la ligne entière débute en colonne H
Tu ne peux pas copier une ligne de 256 colonnes (lignes entières)
vers une destination débutant en colonne H . Il manque 8 colonnes
à la ligne pour que la copie puisse s'effectuer.
Une façon de contourner la chose est d'écrire cette ligne comme ceci :
C.EntireRow.Copy Dest.Offset(H,-7)
Le -7 indique un déplacement de 7 colonnes vers la gauche, c'est-à-dire
jusqu'en A. Dès lors, tu auras 256 colonnes dans ta feuille source qui se
copiera dans 256 colonnes de ta feuille destination, et tout le monde sera
heureux.
MichD
--------------------------------------------
"arissam" a écrit dans le message de groupe de discussion :
7a172b4a-25d8-4479-9769-43538d839a10@x37g2000prb.googlegroups.com...
Bonjour :
J'ai deux codes quasi identiques; l'un marche, l'autre non.
Les seules différences consistent en changement de colonne source et
de colonne destination.
- Le code qui marche :
Sub copier()
Dim Source As Range, Dest As Range
Set Source = Worksheets("feuil1").Range("a:a")
Set Dest = Worksheets("feuil2").Range("a1")
For Each C In Source
If InStr(1, C.Value, "pl", vbTextCompare) > 0 Then
C.EntireRow.Copy Dest.Offset(A)
A = A + 1
End If
Next
Set Source = Nothing: Set Dest = Nothing
End Sub
- Le code qui ne marche pas :
Sub copier()
Dim Source As Range, Dest As Range
Set Source = Worksheets("feuil1").Range("H:H")
Set Dest = Worksheets("feuil2").Range("H1")
For Each C In Source
If InStr(1, C.Value, "pl", vbTextCompare) > 0 Then
C.EntireRow.Copy Dest.Offset(H)
H = H + 1
End If
Next
Set Source = Nothing: Set Dest = Nothing
End Sub
Si tu veux que la copie débute en colonne H dans la feuille de destination
Tu peux utiliser cette ligne de code : Dim NbColonnes As Integer NbColonnes représente le nombre de colonnes de la feuille source que tu veux copier incluant la colonne A à chaque boucle
La variable NbColonnes ne peut pas être plus grande que 248 soit 256 colonnes - 8 (représentée par la colonne H)
c.resize(,NbColonnes).Copy Dest.Offset(H)
MichD -------------------------------------------- "MichD" a écrit dans le message de groupe de discussion : ionigj$9gb$
Bonjour,
Dans la première procédure : C.EntireRow.Copy Dest.Offset(A) Le A représente une variable débutant à 0 et s'incrémentant à la ligne A = A+1 à chaque boucle que fait la procédure. En fait ce "A" fait déplacer la copie d'une ligne inférieure pour chacune des valeurs. Un point important, la copie de la ligne se fait dans la feuille de destination à partir de la colonne A:A
Dans la deuxième procédure, | C.EntireRow.Copy Dest.Offset(H) La copie de la ligne entière débute en colonne H Tu ne peux pas copier une ligne de 256 colonnes (lignes entières) vers une destination débutant en colonne H . Il manque 8 colonnes à la ligne pour que la copie puisse s'effectuer.
Une façon de contourner la chose est d'écrire cette ligne comme ceci : C.EntireRow.Copy Dest.Offset(H,-7) Le -7 indique un déplacement de 7 colonnes vers la gauche, c'est-à-dire jusqu'en A. Dès lors, tu auras 256 colonnes dans ta feuille source qui se copiera dans 256 colonnes de ta feuille destination, et tout le monde sera heureux.
MichD -------------------------------------------- "arissam" a écrit dans le message de groupe de discussion :
Bonjour :
J'ai deux codes quasi identiques; l'un marche, l'autre non. Les seules différences consistent en changement de colonne source et de colonne destination. - Le code qui marche :
Sub copier() Dim Source As Range, Dest As Range Set Source = Worksheets("feuil1").Range("a:a") Set Dest = Worksheets("feuil2").Range("a1")
For Each C In Source If InStr(1, C.Value, "pl", vbTextCompare) > 0 Then C.EntireRow.Copy Dest.Offset(A) A = A + 1
End If Next Set Source = Nothing: Set Dest = Nothing End Sub
- Le code qui ne marche pas :
Sub copier() Dim Source As Range, Dest As Range Set Source = Worksheets("feuil1").Range("H:H")
Set Dest = Worksheets("feuil2").Range("H1")
For Each C In Source If InStr(1, C.Value, "pl", vbTextCompare) > 0 Then C.EntireRow.Copy Dest.Offset(H) H = H + 1
End If Next Set Source = Nothing: Set Dest = Nothing End Sub