Macro

Résolu/Fermé
makbob Messages postés 14 Date d'inscription mercredi 30 mars 2016 Statut Membre Dernière intervention 15 avril 2016 - Modifié par NHenry le 30/03/2016 à 22:14
makbob Messages postés 14 Date d'inscription mercredi 30 mars 2016 Statut Membre Dernière intervention 15 avril 2016 - 31 mars 2016 à 18:19
Bonjour,

je suis nouveau et novice sur la programmation vba. J'ai un grand souci si quelqu'un peut m'aider svp. Voilà j'ai un fichier Excel avec deux onglets liste en cours et liste d'attente. j'ai crée une macro pour transférer des lignes de la liste d'attente à la liste en cours. Le problème est que le transfert ne se fait pas en rajout sur des lignes vides. A chaque transfert çà me supprime toutes les lignes saisies directement sur la liste en cours. La macro est :
Sub Recopier()
 
   Tablo = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L")
   Ln1 = 8
   Ln2 = 8
   While Cells(Ln1, 1).Value <> ""
        If UCase(Range("P" & Ln1).Value) = "MEP" Then
               Col2 = 0
               For Each Col In Tablo
                   Sheets("TB SITUATION EN PLACE").Cells(Ln2, Col2 + 1).Value = Range(Tablo(Col2) & Ln1).Value
                   Col2 = Col2 + 1
               Next Col
               Ln2 = Ln2 + 1
        End If
        Ln1 = Ln1 + 1
    Wend
    Sheets("TB SITUATION EN PLACE").Activate
    
    Range("A7").CurrentRegion.Select
    
    
    With Range("A8:L" & Ln2 - 1)
       
    End With
    
    
End Sub

merci par avance pour votre aide

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

5 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
31 mars 2016 à 08:09
Bonjour,

j'ai laissez la boucle While, mais si beaucoup de ligne (>1000), peut-etre changer pour traitement plus rapide

Sub Recopier()
    Application.ScreenUpdating = False      'fige ecran
   Ln1 = 8
   With Worksheets("feuil1")        'mettre le nom de l'onglet Liste d'attente
        'premiere cellule vide
        Ln2 = Sheets("TB SITUATION EN PLACE").Cells(7, 1).End(xlDown).Row + 1
        While .Cells(Ln1, 1).Value <> ""
            If UCase(.Range("P" & Ln1).Value) = "MEP" Then
                Sheets("TB SITUATION EN PLACE").Range("A" & Ln2 & ":L" & Ln2).Value = .Range("A" & Ln1 & ":L" & Ln1).Value
                Ln2 = Ln2 + 1
            End If
            Ln1 = Ln1 + 1
        Wend
    End With
    Sheets("TB SITUATION EN PLACE").Activate
    Range("A7").CurrentRegion.Select
    With Range("A8:L" & Ln2 - 1)
       
    End With
    Application.ScreenUpdating = True
End Sub
1
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
Modifié par f894009 le 31/03/2016 à 10:54
1
makbob Messages postés 14 Date d'inscription mercredi 30 mars 2016 Statut Membre Dernière intervention 15 avril 2016
31 mars 2016 à 09:11
Bonjour,
Merci beaucoup pour votre réponse. Je sais que ce n'est pas facile de répondre à une question sans avoir un exemple pour l'analyser. J'ai essayé mais çà ne fonctionne pas à chaque fois que je teste la macro elle me supprime les lignes saisies directement sur la feuille situations en place et dans la macro initiale les colonnes à transférer sont ciblés alors que dans votre proposition celle-ci a été supprimée. Pour tester serait il possible de vous envoyer le fichier pour avoir une idée. Merci par avance
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
Modifié par f894009 le 31/03/2016 à 10:15
Re,

les colonnes à transférer sont ciblés alors que dans votre proposition celle-ci a été supprimée. Ben , ce sont les memes, de A a L !!!

Pour transmettre un fichier,
Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDEBTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com

Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
0
makbob Messages postés 14 Date d'inscription mercredi 30 mars 2016 Statut Membre Dernière intervention 15 avril 2016 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
31 mars 2016 à 10:28
Bonjour,
Encore merci beaucoup pour votre aide. Voici le lien
http://www.cjoint.com/c/FCFivrn7XlE
En fait en lançant la macro elle me supprime la ligne saisie sur la feuille TB SITUATION EN PLACE alors qu'elle doit s'ajouter en dessous. Cette feuille n'est pas seulement alimenter de TB SITUATION EN ATTENTE, il arrive que mes collègues saisissent sur la feuille TB SITUATION EN PLACE. Donc les situations qui viennent de la liste d'attente doivent s'ajouter en dessous de la dernière ligne déjà complétée. Alors que là si vous faites un test le rajout se fera en supprimant la ligne en rouge déjà saisie sur la feuille.Je ne sais pas si je suis claire dans mes explication. Merci beaucoup!!!
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702 > makbob Messages postés 14 Date d'inscription mercredi 30 mars 2016 Statut Membre Dernière intervention 15 avril 2016
Modifié par f894009 le 31/03/2016 à 10:42
Re,

Je recupere le fichier

Premiere chose, ce sont les cellules fusionnees qui posent probleme, je rectifie

A+
0
makbob Messages postés 14 Date d'inscription mercredi 30 mars 2016 Statut Membre Dernière intervention 15 avril 2016
31 mars 2016 à 16:07
Bonjour,
Sincèrement merci beaucoup pour ce que vous aviez fait mais y a un problème sur votre macro quand je transfère une situation pour la mise en place il me transfère tout même les anciennes déjà basculé sur les situations en cours. Désolé mais çà me pose un problème alors que sur la première il me prenait que les nouvelles. Merci
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
Modifié par f894009 le 31/03/2016 à 17:16
Re,

Désolé mais çà me pose un problème alors que sur la première il me prenait que les nouvelles. Merci Vous plaisantez, puisque votre code ne marchait pas et il ne fait pas de test dans ce sens !!

Dans votre demande vous precisez pas que seules les demandes nouvelles devraient etre copiees. Quel(s) criteres a prendre en compte pour verifier que la ligne est une nouvelle demande ?????????????????????????????????????
0
makbob Messages postés 14 Date d'inscription mercredi 30 mars 2016 Statut Membre Dernière intervention 15 avril 2016 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
31 mars 2016 à 17:53
Re,
Désolé je ne voulais pas dire çà. je me suis mal exprimé sur ma demande initiale vous avez raison. En fait la saisie peut se faire sur les deux feuilles (mesures en place et en attente). Toutes les occurrences ne passent pas que par la liste d'attente. il peut arriver de saisir des entrées directement sur la liste des mesures en place. Dés qu' il y a de la place sur cette liste on glisse des mesures de la liste d'attente. les nouvelles entrées de la liste d'attente doivent s'jouter en dessous de ce qui existe sur la liste des mesures en place sans qu'elles effacent le contenu saisi (s'il en existe). Votre macro répond à cette dernière exigence et je vous en remercie. Le souci c'est qu'elle me prend même celles qui ont été déjà transféré. Il faut que la macro insère que la nouvelle à laquelle on a choisi MEP. J'espère que mes explications sont claires. Encore désolé je suis un peu stressé, je suis dessus depuis hier matin et je m'arrache les cheveux. Encore une fois merci beaucoup pour votre aide.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702 > makbob Messages postés 14 Date d'inscription mercredi 30 mars 2016 Statut Membre Dernière intervention 15 avril 2016
31 mars 2016 à 17:58
Re,

Cool Raoul, y a pas de lezard

Il faut que la macro insère que la nouvelle à laquelle on a choisi MEP
C'est ce que "mon" code fait !!!!!!
Il faudrait alors effacer le "MEP" apres copie de la ligne
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
makbob Messages postés 14 Date d'inscription mercredi 30 mars 2016 Statut Membre Dernière intervention 15 avril 2016
31 mars 2016 à 18:19
Oui c'est une solution. Merci à vous pour tout. Bonne continuation
0