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

Adaptation d'une macro trouvée sur ce forum HELP!

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

A

aur

Guest
Bonjour,

Je viens solliciter votre aide car j'ai trouvé une macro super sur ce forum, permettant à l'aide d'un bouton de commande de copier des données contenues dans la feuille 1 vers la feuille 3. Mais comment faire pour que les données copiées dans la feuille 3 ne soient pas écrasées dés lors que de nouvelles valeurs sont saisies dans la feuille 1?

Quelqu'un peut-il m'aider? Je joins mon fichier à titre explicatif...
D'avance merci
 

Pièces jointes

Re : Adaptation d'une macro trouvée sur ce forum HELP!

Bonjour,
Dans un module (et non ThisworkBook !)
Code:
Sub Transfert()
Dim C As Range
With Sheets("ANNEE 2012")
    For Each C In .Range("T2:T" & .[B65000].End(xlUp).Row)
        If UCase(C) = "X" Then
            With Sheets("PARTICIPATION")
                x = Application.CountA(.Columns(1)) + 1
                .Cells(x, 1) = C.Offset(0, -17)
            End With
        End If
    Next
End With
End Sub
Not qu'il faudrait peut-être gérer les doublons, non ?
A+
kjin
 
Re : Adaptation d'une macro trouvée sur ce forum HELP!

Merci beaucoup pour ton aide !!!
Etant très novice en la matière, je bloque depuis plusieurs jours là-dessus.
Et en effet, je n'ai hélas pas pensé aux doublons
Comment faire??
 
Re : Adaptation d'une macro trouvée sur ce forum HELP!

Bonsoir,
Comme ceci
Code:
Sub Transfert()
Dim c As Range, nom$, x#
With Sheets("ANNEE 2012")
    For Each c In .Range("T2:T" & .[B65000].End(xlUp).Row)
        If UCase(c) = "X" Then
            nom = c.Offset(0, -17)
            With Sheets("PARTICIPATION")
                x = Application.CountA(.Columns(1)) + 1
                If Application.CountIf(.Columns(1), nom) = 0 Then
                    .Cells(x, 1) = nom
                End If
            End With
        End If
    Next
End With
End Sub
A+
kjin
 
Re : Adaptation d'une macro trouvée sur ce forum HELP!

Bonjour à vous deux et à ceux qui passeront

juste une remarque : beaucoup de codes ont un héritage de XL 2003 et les lignes y étaient limitées à 65536. Depuis 2007 cela a encore grandi et quelques utilisateurs dépassent (abusent parfois) de ces nouvelles possibilités.

Pour ceux qui utilisent le .end(xlup), un code qui marche quelle que soit la version consiste à remplacer 65000 par rows.count, la macro s'adaptera alors à la version XL
 
- 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

A
  • Question Question
Réponses
8
Affichages
950
A
Réponses
37
Affichages
4 K
asso78Lim
A
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…