Légère modification d'un code pour coller a la suite des valeurs
Résolu/Fermé
kgigant
Messages postés
202
Date d'inscription
lundi 21 mars 2011
Statut
Membre
Dernière intervention
8 janvier 2014
-
Modifié par kgigant le 18/02/2013 à 10:02
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 19 févr. 2013 à 09:35
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 19 févr. 2013 à 09:35
A voir également:
- Légère modification d'un code pour coller a la suite des valeurs
- Suivi des modifications word - Guide
- Code ascii de a - Guide
- Logiciel modification pdf gratuit - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
3 réponses
kgigant
Messages postés
202
Date d'inscription
lundi 21 mars 2011
Statut
Membre
Dernière intervention
8 janvier 2014
9
18 févr. 2013 à 10:35
18 févr. 2013 à 10:35
J'ai ajouter un code et ça à l'air de fonctionner mais j'aimerai bien avoir l'approbation d'une personne pour m'asurer que le code réponds bien à mes attentes.
Le voici :
Sub a()
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("feuil2").Activate ' feuille de destination
Col = "A" ' colonne données non vides à tester'
NumLig = 2 'alors là ca doit etre le N° de la 1er ligne de données en comptant la ligne 1 = 0 .... ? '
With Sheets("feuil1") ' feuille source'
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig 'n° de la 1ere ligne de données'
If .Cells(Lig, Col).Value <> "" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
'Sheets("feuil2").Cells(NumLig, 1).Insert Shift:=xlDown
'ici pour insérer ou .Paste pour coller'
Sheets("Feuil2").Select
Range("A1").Select
Do While ActiveCell.Value > ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
End If
Next
End With
End Sub
Le voici :
Sub a()
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("feuil2").Activate ' feuille de destination
Col = "A" ' colonne données non vides à tester'
NumLig = 2 'alors là ca doit etre le N° de la 1er ligne de données en comptant la ligne 1 = 0 .... ? '
With Sheets("feuil1") ' feuille source'
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig 'n° de la 1ere ligne de données'
If .Cells(Lig, Col).Value <> "" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
'Sheets("feuil2").Cells(NumLig, 1).Insert Shift:=xlDown
'ici pour insérer ou .Paste pour coller'
Sheets("Feuil2").Select
Range("A1").Select
Do While ActiveCell.Value > ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Paste
End If
Next
End With
End Sub
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
18 févr. 2013 à 10:41
18 févr. 2013 à 10:41
Bonjour,
Bien compliqué ton code !
Combien as tu de colonnes à copier dans ta feuille source ?
Bien compliqué ton code !
Combien as tu de colonnes à copier dans ta feuille source ?
kgigant
Messages postés
202
Date d'inscription
lundi 21 mars 2011
Statut
Membre
Dernière intervention
8 janvier 2014
9
18 févr. 2013 à 10:59
18 févr. 2013 à 10:59
j'ai les 12 premières colonnes ( de A à L)
kgigant
Messages postés
202
Date d'inscription
lundi 21 mars 2011
Statut
Membre
Dernière intervention
8 janvier 2014
9
18 févr. 2013 à 10:53
18 févr. 2013 à 10:53
le nombre de ligne à copier change tous les jours. je peux en avoir 60 comme je peux en avoir 600.
Par contre je viens de me rendre compte d'un problème, les quelques lignes que je copie en feuil1 vont s'ajouter à toutes les lignes de la feuil2, cependant j'en ai plus de 1000 du coup le code défile une à une les lignes .... il met donc plusieurs minutes à s'éxecuter.
Par contre je viens de me rendre compte d'un problème, les quelques lignes que je copie en feuil1 vont s'ajouter à toutes les lignes de la feuil2, cependant j'en ai plus de 1000 du coup le code défile une à une les lignes .... il met donc plusieurs minutes à s'éxecuter.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
18 févr. 2013 à 11:08
18 févr. 2013 à 11:08
OK, sois patient
kgigant
Messages postés
202
Date d'inscription
lundi 21 mars 2011
Statut
Membre
Dernière intervention
8 janvier 2014
9
18 févr. 2013 à 11:17
18 févr. 2013 à 11:17
patient pour que tu m'aide ou patient parce on ne peut pas faire mieux (j'en doute) ?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
18 févr. 2013 à 12:20
18 févr. 2013 à 12:20
re
patient pour que tu m'aide
quand on propose une solution sur un forum, c'est pour aider! ! , la patience c'est pour attendre car on a pas que ça à faire
Essaies cette macro
patient pour que tu m'aide
quand on propose une solution sur un forum, c'est pour aider! ! , la patience c'est pour attendre car on a pas que ça à faire
Essaies cette macro
Sub xxx() Dim NbrLig As Long, Numlig As Long, Nbre As Long, Col As Byte Dim Tablo(), Ligvide As Long Dim Start As Single Start = Timer Application.ScreenUpdating = False With Sheets("feuil1") 'initialisations NbrLig = .Cells(65536, "A").End(xlUp).Row Nbre = Application.CountIf(.Range("A2:A" & NbrLig), "*") ReDim Tablo(1 To Nbre, 1 To 12) Numlig = 1 'collecte des données à transférer For cptr = 1 To Nbre Numlig = Columns("A").Find("*", Cells(Numlig, "A"), xlValues).Row For Col = 1 To 12 Tablo(cptr, Col) = Cells(Numlig, Col) Next Next End With With Sheets("feuil2") 'restitution Ligvide = .Cells(65536, "A").End(xlUp).Row + 1 .Cells(Ligvide, "A").Resize(Nbre, 12) = Tablo .Select End With Application.ScreenUpdating = True MsgBox "durée: " & Timer - Start & " .sec." End Sub
kgigant
Messages postés
202
Date d'inscription
lundi 21 mars 2011
Statut
Membre
Dernière intervention
8 janvier 2014
9
18 févr. 2013 à 12:55
18 févr. 2013 à 12:55
je vais essayer ça, je te retiens au courant.
Merci en attendant
Merci en attendant
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
18 févr. 2013 à 13:48
18 févr. 2013 à 13:48
Excuses moi, mais c'est Lundi
Sans boucle et certainement + raide
Sans boucle et certainement + raide
Option Explicit Sub xxx() Dim NbrLig As Long, Col As Byte Dim Tablo(), Ligvide As Long Dim Start As Single Start = Timer Application.ScreenUpdating = False With Sheets("feuil1") 'initialisations NbrLig = .Cells(65536, "A").End(xlUp).Row Tablo = .Range("A2:L" & NbrLig).Value End With With Sheets("feuil2") 'restitution Ligvide = .Cells(65536, "A").End(xlUp).Row + 1 .Cells(Ligvide, "A").Resize(UBound(Tablo), 12) = Tablo .Range(.Cells(Ligvide, "A"), .Cells(Ligvide + 1000, "A")).SpecialCells(xlCellTypeBlanks).EntireRow.Delete .Select End With Application.ScreenUpdating = True MsgBox "durée: " & Timer - Start & " .sec." End Sub