Macro foirée par décalage de colonne !
Résolu
Phildemarseille
Messages postés
17
Statut
Membre
-
Phildemarseille Messages postés 17 Statut Membre -
Phildemarseille Messages postés 17 Statut Membre -
Bonjour,
sous Windows XP / Excel 2000
je me suis adressé récemment au forum pour me dépanner sur une macro et Eriiic m'a gentiment dépanné.
Là dessus, je m'aperçois qu'il me faut rajouter une colonne dans mon tableau, je me dis, qu'à cela ne tienne, il suffit de changer le nom des colonnes dans la macro ... mais ça me colle systématiquement les lignes ajoutées en tête de tableau - que je mette "Ascending" ou "Descending" en bas de macro.
Quand je vous dit que je ne touche pas ma bille en VB !
La macro originelle est la suivante :
' Transfert_lignes_sur_autre_feuille Macro
' Macro enregistrée le 30/05/2013 par vdm
'
' Touche de raccourci du clavier: Ctrl+f
Application.ScreenUpdating = False
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("Patrimoine").Activate
Col = "M"
NumLig = 3
With Sheets("Général")
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 4 To NbrLig
If .Cells(Lig, Col).Value = "640" And .Cells(Lig, "N") = "" Then
.Cells(Lig, Col).EntireRow.Copy
Sheets("Patrimoine").Cells(NumLig, 1).Insert Shift:=xlDown
.Cells(Lig, "N") = "x"
NumLig = NumLig + 1
[A2].CurrentRegion.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlYes
End If
Next Lig
Application.ScreenUpdating = True
End With
End Sub
J'ai remplacé Col = "M" par Col = "O"
J'ai déplacé la colonne témoin en A et ai donc remplacé "N" par "A".
Pourquoi est ce que je n'arrive plus à transférer mes nouvelles lignes créées dans "Général", en bas de tableau dans la feuille "Patrimoine??
Merci d'avance pour vos réponses zéclairées.
Phil
sous Windows XP / Excel 2000
je me suis adressé récemment au forum pour me dépanner sur une macro et Eriiic m'a gentiment dépanné.
Là dessus, je m'aperçois qu'il me faut rajouter une colonne dans mon tableau, je me dis, qu'à cela ne tienne, il suffit de changer le nom des colonnes dans la macro ... mais ça me colle systématiquement les lignes ajoutées en tête de tableau - que je mette "Ascending" ou "Descending" en bas de macro.
Quand je vous dit que je ne touche pas ma bille en VB !
La macro originelle est la suivante :
' Transfert_lignes_sur_autre_feuille Macro
' Macro enregistrée le 30/05/2013 par vdm
'
' Touche de raccourci du clavier: Ctrl+f
Application.ScreenUpdating = False
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("Patrimoine").Activate
Col = "M"
NumLig = 3
With Sheets("Général")
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 4 To NbrLig
If .Cells(Lig, Col).Value = "640" And .Cells(Lig, "N") = "" Then
.Cells(Lig, Col).EntireRow.Copy
Sheets("Patrimoine").Cells(NumLig, 1).Insert Shift:=xlDown
.Cells(Lig, "N") = "x"
NumLig = NumLig + 1
[A2].CurrentRegion.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlYes
End If
Next Lig
Application.ScreenUpdating = True
End With
End Sub
J'ai remplacé Col = "M" par Col = "O"
J'ai déplacé la colonne témoin en A et ai donc remplacé "N" par "A".
Pourquoi est ce que je n'arrive plus à transférer mes nouvelles lignes créées dans "Général", en bas de tableau dans la feuille "Patrimoine??
Merci d'avance pour vos réponses zéclairées.
Phil
A voir également:
- Macro foirée par décalage de colonne !
- Déplacer colonne excel - Guide
- Trier colonne excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Colonne word - Guide
- Formule somme excel colonne - Guide
11 réponses
Tu pourrai passer le fichier Excel original et celui modifié pour que l'ont puissent bien comprendre.
Bonjour
Pas terrible la macro
avec un modele de ton fichier serais plus simple
Col doit etre un Chiffre
Sub test()
Dim Lig As Long
Dim Col As Long
Dim NbrLig As Long
Dim NumLig As Long
' Col = "O" Faux
'la colonne O = 15
'Cells ne suporte pas les String
Col = 15
Lig = 1
If Cells(Lig, Col).Value = "640" And Cells(Lig, Col + 1) = "" Then
MsgBox "Ok"
End If
End Sub
A+
Maurice
Pas terrible la macro
avec un modele de ton fichier serais plus simple
Col doit etre un Chiffre
Sub test()
Dim Lig As Long
Dim Col As Long
Dim NbrLig As Long
Dim NumLig As Long
' Col = "O" Faux
'la colonne O = 15
'Cells ne suporte pas les String
Col = 15
Lig = 1
If Cells(Lig, Col).Value = "640" And Cells(Lig, Col + 1) = "" Then
MsgBox "Ok"
End If
End Sub
A+
Maurice
Bonjour,
Est-ce que votre fichier, de l'autre poste du 31.05.2013 est toujours valable ..... ?
Si oui, qu'elle est la colonne que vous avez insérer .... , à qu'elle position et son nom ?
Note : flo (bonjour) ceci n'est pas vrai [Col doit être un Chiffre] il est tout à fait possible d'utiliser la notation via un caractère de colonne (A, B, etc....)
Est-ce que votre fichier, de l'autre poste du 31.05.2013 est toujours valable ..... ?
Si oui, qu'elle est la colonne que vous avez insérer .... , à qu'elle position et son nom ?
Note : flo (bonjour) ceci n'est pas vrai [Col doit être un Chiffre] il est tout à fait possible d'utiliser la notation via un caractère de colonne (A, B, etc....)
Bonjour, voici le fichier en question. La colonne servant de marquage est maintenant la "A".
J'ai entre temps refait une deuxième macro pour dupliquer des lignes selon un autre critère "G2C" à chercher dans la colonne "C" de la feuille "Général".
Le lien est : https://www.cjoint.com/?3Fgj53ENLOW
J'ai entre temps refait une deuxième macro pour dupliquer des lignes selon un autre critère "G2C" à chercher dans la colonne "C" de la feuille "Général".
Le lien est : https://www.cjoint.com/?3Fgj53ENLOW
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
jais fait une macro regard si le principe te va
http://cjoint.com/?3Fgp7Rb08fh
Ctrl+Maj+F
A+
Maurice
jais fait une macro regard si le principe te va
http://cjoint.com/?3Fgp7Rb08fh
Ctrl+Maj+F
A+
Maurice
Merci Maurice, sauf que dans la feuille "Patrimoine", arrivent toutes sortes de lignes qui n'ont pas comme code de "Service concerné" = 640
Pour récapituler, de la feuille "Général", doivent être copiées
- d'une part les lignes dont l'émetteur est "G2C" vers la feuille "G2C"
- d'autre part les lignes dont le code Service concerné est "640" vers la feuille "Patrimoine"
Merci pour ta patience.
Phil
Pour récapituler, de la feuille "Général", doivent être copiées
- d'une part les lignes dont l'émetteur est "G2C" vers la feuille "G2C"
- d'autre part les lignes dont le code Service concerné est "640" vers la feuille "Patrimoine"
Merci pour ta patience.
Phil
Réponse à Le Pingou, qui a la gentillesse de s'intéresser aussi au sujet :
je ne peux différencier les factures concernant un type de bâtiment ( Patrimoine) de celles émanant d'un prestataire (G2C) à partir de la même colonne.
je ne peux différencier les factures concernant un type de bâtiment ( Patrimoine) de celles émanant d'un prestataire (G2C) à partir de la même colonne.
Re
Voila la modife
Dim Emetteur As String
Dim Col As Long
Sub ListeEmetteur()
Feuil4.Select
Emetteur = "SEM"
Col = 3
Call Transfert
Feuil3.Select
Emetteur = "G2C"
Col = 3
Call Transfert
Feuil1.Select
Emetteur = "640"
Col = 15
Call Transfert
End Sub
Sub Transfert()
Application.ScreenUpdating = False
Rows("3:10000").ClearContents
NumLig = 3
With Feuil2
NbrLig = .Cells(65536, 2).End(xlUp).Row
For Lig = 4 To NbrLig
If .Cells(Lig, Col).Value = Emetteur Then
.Range("B" & Lig & ":O" & Lig).Copy
Range("A" & NumLig).PasteSpecial xlPasteValues
.Cells(Lig, 1) = "x"
NumLig = NumLig + 1
End If
Next Lig
End With
Cells.WrapText = False
Rows("2").WrapText = True
Application.ScreenUpdating = True
[A3].Select
[A1].Select
End Sub
A+
Maurice
Voila la modife
Dim Emetteur As String
Dim Col As Long
Sub ListeEmetteur()
Feuil4.Select
Emetteur = "SEM"
Col = 3
Call Transfert
Feuil3.Select
Emetteur = "G2C"
Col = 3
Call Transfert
Feuil1.Select
Emetteur = "640"
Col = 15
Call Transfert
End Sub
Sub Transfert()
Application.ScreenUpdating = False
Rows("3:10000").ClearContents
NumLig = 3
With Feuil2
NbrLig = .Cells(65536, 2).End(xlUp).Row
For Lig = 4 To NbrLig
If .Cells(Lig, Col).Value = Emetteur Then
.Range("B" & Lig & ":O" & Lig).Copy
Range("A" & NumLig).PasteSpecial xlPasteValues
.Cells(Lig, 1) = "x"
NumLig = NumLig + 1
End If
Next Lig
End With
Cells.WrapText = False
Rows("2").WrapText = True
Application.ScreenUpdating = True
[A3].Select
[A1].Select
End Sub
A+
Maurice