Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[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.
 

skoobi

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

Re,
tester la première ligne dans la feuille de destination
Tu veux tester toutes les colonnes de la ligne ou uniquement de A à E par exemple?
Et comme dis précédement, avec un fichier, on y verra plus clair.
 

Discussions similaires

Réponses
2
Affichages
211
Réponses
7
Affichages
550
Réponses
1
Affichages
322
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…