Copier des lignes d'une cellule d'un feuille sans une autre feuille

  • Initiateur de la discussion Initiateur de la discussion blanco31
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

blanco31

Guest
Bonsoir,

Ayant très peu de connaissance en Macro excel, je souhaite transcrire mon script ci-dessous en VBA dans mon fichier :

Recherche dans la colonne AE (1500 lignes)
Si = DSK001 et AF=1 (Nb =1)
Copier de AK (Feuil IMMO) dans B (Feuil DSK001)
Copier colonne AL (Feuil IMMO) dans colonne A (Feuil DSK001)
Si (NB>1) créer le nombre de ligne correspondant à Nb ( Ex : 6 => 6 lignes vides) // avec toujours la condition du DSK001
Si "PO" contient dans la colonne AL (Feuil IMMO)
ajouter le chiffre 0 dans la colonne H (Feuil DSK001)

Je dois appliquer cette moulinette pour les autres DSK : DSK005, DSK009, DSK010 et DSK011.
Merci
 
Re : Copier des lignes d'une cellule d'un feuille sans une autre feuille

Bonjour à tous

blanco31 [Bienvenue sur le forum]
Ayant très peu de connaissance en Macro excel, je souhaite transcrire mon script ci-dessous en VBA dans mon fichier :
Cela n'est point grave, on pourra t'aider sur ce coup là.
Par contre on ne peut rien faire contre tes problèmes oculaires ou la défectuosité manifeste de tes lunettes...
Car comment comprendre que ce petit paragraphe, que DavidXLD a pris soin de concocter pour les les nouveaux membres, t'ait complétement échappé ?

IMPORTANT :
- CHARTE DU FORUM : Lisez Lien supprimé avant votre première intervention.

- ILLUSTREZ VOTRE DEMANDE : Afin de faciliter la compréhension de votre demande il est conseillé de joindre un PETIT fichier qui illustre votre question précise et montre les résultats que vous cherchez à obtenir.
Pour l'envoyer, cliquez sur le trombone ci-dessous ou sur le bouton "Gérer les pièces jointes" dans la zone "Options supplémentaires".Ensuite, cliquez sur le bouton "Parcourir" et sélectionnez-le (après l'avoir compressé s'il dépasse les 250Ko).


- DONNEES CONFIDENTIELLES : Ne laissez AUCUNE donnée personnelle ou confidentielle (noms, adresses, N° de téléphone, entreprises...) dans vos pièces jointes. Vous mettriez Excel-Downloads en contravention avec la loi Informatique et Liberté et votre fichier devrait être enlevé.
 
Re : Copier des lignes d'une cellule d'un feuille sans une autre feuille

Bonjour Staple1600,

Tu as raison, je n'ai pas lu entièrement le règlement et je m'en excuse. Je pensais qu'un algo pourrait suffir.
Mais voici en PJ mon fichier d'exemple.

En espérant que tu puisses m'aider. ;-)
Cordialement.
 
Dernière modification par un modérateur:
Re : Copier des lignes d'une cellule d'un feuille sans une autre feuille

Bonsoir à tous

blanco31
Voici une première partie de macro
Je te laisse l'étudier et la tester
(et attends tes éventuelles questions pour aller plus loin)
Code vb:
Sub a()
'Recherche dans la colonne AE (1500 lignes)
'Si = DSK001 et AF=1 (Nb =1)
'Copier de AK (Feuil IMMO) dans B (Feuil DSK001)
'Copier colonne AL (Feuil IMMO) dans colonne A (Feuil DSK001)
Dim wsS As Worksheet, dlig&, k&, cpt&, t, j As Byte
Set wsS = Sheets("IMMO")
dlig = wsS.Cells(Rows.Count, Col).End(xlUp).Row
t = Array("DSK001", "DSK005", "DSK009", "DSK010", "DSK011")
For cpt = 2 To dlig
For j = LBound(t) To UBound(t)
On Error Resume Next
If Cells(cpt, Col) Like t(j) And Cells(cpt, Col + 1) = 1 Then
Cells(cpt, "AK").Copy Sheets(t(j)).Cells(Rows.Count, "B").End(xlUp)(2)
Cells(cpt, "AL").Copy Sheets(t(j)).Cells(Rows.Count, "A").End(xlUp)(2)
End If
Next j
Next cpt
End Sub
 
Re : Copier des lignes d'une cellule d'un feuille sans une autre feuille

Bonsoir Staple1600,

J'ai une erreur de compilation 1004. Sur la ligne 🙁 :
dlig = wsS.Cells(Rows.Count, Col).End(xlUp).Row

Merci
cdt
 
Re : Copier des lignes d'une cellule d'un feuille sans une autre feuille

Ça fonctionne nikel sur mon fichier de test mais pas sur mon fichier contenant 2000 lignes ?
J'ai juste un onglet total entre IMMO et DSK001 ... pour mes stats ?, ca peut poser problème ?

Par contre, Est-ce qu'il est possible lorsque je relance à macro, que les copies se réinitialisent ? ( pour ne pas avoir des lignes en doublon).
J'aimerai positionner le chiffre 0 pour une valeur "PO" trouvé dans la colonne A dans la colonne H ? et le chiffre 1 pour la valeur "UC" dans cette même colonne H. ( pour chaque DSK..)

Merci
cdt
 
Dernière modification par un modérateur:
Re : Copier des lignes d'une cellule d'un feuille sans une autre feuille

Bonjour,

Aprés plusieus manips, j'ai réussi à lancer le script et il fonctionne sauf pour les lignes DSK005.

Par contre, Est-ce qu'il est possible lorsque je relance à macro, que les copies se réinitialisent ? ( pour ne pas avoir des lignes en doublon).
J'aimerai positionner le chiffre 0 pour une valeur "PO" trouvé dans la colonne A dans la colonne H ? et le chiffre 1 pour la valeur "UC" dans cette même colonne H. ( pour chaque DSK..)

Merci
cdt
 
Re : Copier des lignes d'une cellule d'un feuille sans une autre feuille

Bonsoir à tous

blanco31
On n'est pas aux pièces...😉
Pour le moment, je passe à table
Je reviendrai t'aider plus tard dans la soirée.

PS: Le forum est peuplé de bénévoles, pas de prestataires de service contraints par des des délais ou des obligations de résultats...🙄
 
Re : Copier des lignes d'une cellule d'un feuille sans une autre feuille

Re

blanco31
Donc si j'ai compris ce que tu entends par réinitialiser
Essaies ce nouveau code VBA
(Copies ces nouveaux codes VBA puis lances la procédure MainProc)
Code:
Const Col As Long = 31
Sub MainProc()
ReInit
mCopie
End Sub
Code:
Private Sub mCopie()
Dim wsS As Worksheet, dlig&, k&, cpt&, t, j As Byte
Set wsS = Sheets("IMMO")
dlig = wsS.Cells(Rows.Count, Col).End(xlUp).Row
t = Array("DSK001", "DSK005", "DSK009", "DSK010", "DSK011")
    For cpt = 2 To dlig
        For j = LBound(t) To UBound(t)
        On Error Resume Next
            If Cells(cpt, Col) Like t(j) And Cells(cpt, Col + 1) = 1 Then
            Cells(cpt, "AK").Copy Sheets(t(j)).Cells(Rows.Count, "B").End(xlUp)(2)
            Cells(cpt, "AL").Copy Sheets(t(j)).Cells(Rows.Count, "A").End(xlUp)(2)
            End If
        Next j
    Next cpt
End Sub
Code:
Private Sub ReInit()
Dim i As Byte
    For i = 2 To Sheets.Count
    Sheets(i).Rows("2:12345").Clear
    Next
Sheets(1).Activate
End Sub
 
Dernière édition:
Re : Copier des lignes d'une cellule d'un feuille sans une autre feuille

Bonsoir Staple1600,

En effet, tu as raison ;-). Il est vrai que tu m'as beaucoup fait avancer.
Merci
Je vais tester demain matin.
Bonne soirée
Et encore un grand merci. Je te fais un retour de mes tests
Cdt
 
Re : Copier des lignes d'une cellule d'un feuille sans une autre feuille

Bonjour Staple1600,

En lançant la macro, j'ai mes datas qui ont été effacées et non mes DSK ? :-(

pour information, j'ai insérer le bouton/macro dans mon onglet IMMO.

cdt
 
Re : Copier des lignes d'une cellule d'un feuille sans une autre feuille

Re,

Peux-être que c'est moi qui me suis mal exprimé...🙁

En fait, je souhaite pouvoir lancer le transfert plusieurs fois car je vais avoir des données qui vont se rajouter sur chaque DSK.
les données changent souvent ou se rajoute en fonction des mois ... Donc effacer le contenu des DSK aprés lancement de la macro.
😱
cdt
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
839
Retour