Probleme de copie de cellule vers autre feuille

  • Initiateur de la discussion Initiateur de la discussion freyer
  • 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 !

freyer

XLDnaute Nouveau
Bonjour a tous,


Mon classeur comporte 2 Feuilles. Une feuille "Demande", l'autre "Suivis".
Ma macro compte dans un premier temps le nb de lignes non vide sur la feuille "suivis".
Puis elle cherche des valeurs dans la plage ("E19:E29)
Je souhaite que si une cellule de cette plage n'est pas vide alors cette cellule ainsi que les 3 précedentes de la même ligne soient copier à la suite sur la feuille "Suivis".
Ensuite elle passe à la cellule suivante.

Mon probleme est que la macro copie les dernieres valeurs autant de fois qu'il y a de ligne dans ma plage ("E19:E29) même si la cellule de reference est vide.
Du coups je me retouve avec des doublons.

C'est comme si elle ne prenait pas en compte le IF.

Je joint le fichier en question.

Par avance, merci pour votre aide.


Code:
Sub Suivis()
'
' Suivis Macro
'

'
Dim AjoutSuppr
Dim NumLigne

NumLigne = ActiveCell.Row
F_destination = "Suivis"    'Feuille de destination pour la copie

    Sheets("Suivis").Select     'Selection de la feuille "Suivis"
    
    'Determine le nb de ligne non vide dans la feuille "Suivis"
                nb = 0
                For Each lig In ActiveSheet.UsedRange.Rows
                  If Application.CountA(lig) > 0 Then nb = nb + 1
                Next


    Sheets("Demande").Select 'Selection de la feuille "Demande"
  
    'Boucle sur selection, recherche de valeur et copie dans une seconde feuille
            Set AjoutSuppr = ActiveSheet.Range("E19:E29")
            i = nb + 1
            For Each Cell In AjoutSuppr
            
                If Cell.Value <> "" Then Cell.Select
                    i = i + 1: Cells(2, 10).Value = nb
                    Range("B" & ActiveCell.Row & ":E" & ActiveCell.Row).Copy (Sheets(F_destination).Range("A" & i))
                    Range("E5").Copy (Sheets(F_destination).Range("E" & i)) 'copie la date du jour qui est en E5

                
            Next Cell

                
            
    'Suppression du format des colonnes ABCD
    Sheets("Suivis").Select
                Columns("A:D").Select
                Selection.ClearFormats
    
    End Sub
 

Pièces jointes

Re : Probleme de copie de cellule vers autre feuille

Deuxieme tentative
et cette fois ci ça marche : le texte apres le if sur la même ligne est celui qui s'applique si vrai
ce qui est en dessous s'applique si faux
corrigé ainsi :
Code:
            For Each Cell In AjoutSuppr
            
                If Cell.Value <> "" Then
                    Cell.Select
                    i = i + 1: Cells(2, 10).Value = nb
                    Range("B" & ActiveCell.Row & ":E" & ActiveCell.Row).Copy (Sheets(F_destination).Range("A" & i))
                    Range("E5").Copy (Sheets(F_destination).Range("E" & i)) 'copie la date du jour qui est en E5
                End If
                
            Next Cell
donne bien 3 lignes
Cordialement
 
Re : Probleme de copie de cellule vers autre feuille

Re,
Je suis assez nul en vba mais j'ai au moins retenu ceci : le if..then a deux syntaxes
soit tu mets après le then ce qui s'exécute si vrai et à la ligne ce qui s'exécutesi faux et donc pas de end if
soit tu vas à la ligne après then et là tout ce qui est aprés s'exécute si vrai jusqu'au end if
Cordialement
 
- 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

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
10
Affichages
547
Réponses
4
Affichages
223
Retour