[VBA Débutant] Définir une ligne au dela de laquelle ne rien écrire.

Ginko-2k8

XLDnaute Nouveau
Bonjour cher amis !

Deux petites questions auxquelles je ne trouve pas de réponse

1) lorsque j'exécute ma macro, elle est sensée copier dans une feuille les lignes des autres feuilles ou se trouve le mot commande, et cela marche tres bien.

J'aurai besoin d'y ajouter deux choses :

Le fait qu'elle me copie les 5x2 premieres cellules (de A1 a E2) a chaque fois qu'elle change de feuille

et le fait qu'elle n'écrive pas si il y a des données sur la ligne concernée dans la feuille de destination. En effet, elle commence par la fin pour remonter dans la feuille de destination, et elle m'ecrase des données que j'ai mis.

j'ai bien essayer quelques trucs pour copier les premiers cellules de chaque feuille mais ma syntaxe est mauvaise car cela ne marche pas :(

Quelqu'un pourrait il m'aider ?

Voici le code en question

Code:
Private Sub CopieLigneCDE(wsFeuil As Worksheet)
    Dim F_S As Worksheet    'Feuille source
    Dim F_D As Worksheet    'Feuille Destination
    Dim Lig_S As Long       'Ligne source
    Dim Lig_D As Long       'Ligne destination
    
    
    Set F_S = wsFeuil                       'feuille source
    Set F_D = Sheets("CDES")    'feuille destination = onglet(CDES)
    
    ' max ligne en decrementation sur destination.
    Lig_D = F_D.Range("E" & Cells.Rows.Count).End(xlUp).Row + 1
    
    MotCherche = "commande"
    
    'Presentation : copie du titre de chaque feuille sur la feuille CDES
    'a venir
    
    'Programme *****************************************
    
    For Lig_S = F_S.Range("E" & Cells.Rows.Count).End(xlUp).Row To 2 Step -1
        'en passant à la ligne précédente par décrémentation (-1)
        'Quand la valeur est inférieure à 1, on passe à la ligne suivant Next Lig_S
        
        If UCase(F_S.Range("E" & Lig_S).Value) Like "*" & UCase(MotCherche) & "*" Then
            'E testé contient MotCherche
            F_S.Rows(Lig_S).Copy Destination:=F_D.Rows(Lig_D)
            'on copie la ligne source sur la ligne destination
            Lig_D = Lig_D + 1
            'on passe à la ligne destination suivante
            'F_S.Rows(Lig_S).Delete
            'on efface la ligne source
        End If
    Next Lig_S
End Sub
 

skoobi

XLDnaute Barbatruc
Re : [VBA Débutant] Définir une ligne au dela de laquelle ne rien écrire.

Bonjour,
elle commence par la fin pour remonter dans la feuille de destination
tu es sûr de ça car dans le code, tu passes à la ligne suivante dans la feuille de déstination:
Lig_D = Lig_D + 1 (plus)

Cela dit, on y verra plus clair avec le fichier.

C'est plutot dans la feuille source que tu remontes...
 

Ginko-2k8

XLDnaute Nouveau
Re : [VBA Débutant] Définir une ligne au dela de laquelle ne rien écrire.

Oui en effet je me suis mal exprimé ;)

en fait grosso modo ce que je voudrais faire, c'est lui dire soit de tester la première ligne dans la feuille de destination où il va écrire et vérifier qu'il n'y a pas de données dedans, soit carrément définir la première ligne dans la feuille de destination dans laquelle il peut copier les données.
 

Discussions similaires

Réponses
2
Affichages
162
Réponses
7
Affichages
458
Réponses
1
Affichages
226

Statistiques des forums

Discussions
312 884
Messages
2 093 252
Membres
105 658
dernier inscrit
Mario Richard