Une boucle qui transferts les donner une seule fois

BelhoucineDine Messages postés 41 Statut Membre -  
BelhoucineDine Messages postés 41 Statut Membre -
Bonjour, j'ai créée un programme dans Excel 2007 pour transferts les donner de la feuille 1 à la feuille 2 et 3 suivent une condition.
J'ai fais un bouton avec VBA qui transferts les donner, mai chaque fois quand je click sur CommandButton1 ce répète plusieurs fois
Je veux une boucle qui transferts les donner une seule fois
Voilà mon code:
Private Sub CommandButton1_Click()
Dim cl As Range, i As Integer
For i = 2 To 3
For Each cl In Range("H4:H" & [H10000].End(xlUp).Row)
If cl.Value = Sheets(i).Name Then
cl.Offset(0, -6).Resize(1, 7).Copy Sheets(i).Range("B" & Sheets(i).[B10000].End(xlUp).Row + 1)
End If
Next cl
Next i
MsgBox "Transfert apte et inapte", vbOKOnly, "Transfert"

'MsgBox "Vous ne pouvez pas transfert à nouveau", vbOKOnly, "Transfert"
End Sub

2 réponses

  1. phadeb Messages postés 91 Statut Membre 21
     
    Bonjour,

    Déja je te conseille d'inverser tes boucles, parcequ'il parcours 2 fois ta feuille 1 alors qu'une fois est suffisante

    Dim cl As Range, i As Integer
    For Each cl In Range("H4:H" & [H10000].End(xlUp).Row)
    For i = 2 To 3
    If cl.Value = Sheets(i).Name Then
    cl.Offset(0, -6).Resize(1, 7).Copy Sheets(i).Range("B" & Sheets(i).[B10000].End(xlUp).Row + 1)
    End If
    Next i
    Next cl
    MsgBox "Transfert apte et inapte", vbOKOnly, "Transfert"
    'MsgBox "Vous ne pouvez pas transfert à nouveau", vbOKOnly, "Transfert"


    Ensuite si j'ai bien compris, tu ne veux pas avoir de doublons. Le plus simple est d'appliquer à la fin, en dehors des boucles, cette fonction pour enlever les doublons :

    ActiveSheet.Range("$B$2:$H$17").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, 7 _
            ), Header:=xlNo


    D'autres conseils :

    -utilise plutôt end(xldown) plutôt que end(xlup)
    -utilise un assignement de cellules direct plutôt que la fonction Copy
    --
    0
  2. BelhoucineDine Messages postés 41 Statut Membre
     
    Merci Phadeb pour votre réponse
    Tout ce que vous avez demandé que j'ai essayé mais n'a pas réussi
    Ma commande est:
    Lorsque vous appuyez sur le bouton pour la première fois le relais, et lorsque vous appuyez sur le bouton pour la deuxième fois ce répète deux fois et plus le transfert de donner
    J'utilise la fonction Copy plus pratique parce que je la métrise
    Pour les doublons n’est pas un problème parce que les tableaux les demandent
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour a vous deux

      BelhoucineDine:
      Je veux une boucle qui transferts les donner une seule fois
      et
      Pour les doublons n’est pas un problème parce que les tableaux les demandent


      Y a un probleme, vous ne voulez pas de doublons mais y en a donc tout va bien.
      0
    2. phadeb Messages postés 91 Statut Membre 21 > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
       
      Je pense qu'il ne veux pas plus de doublons que les doublons initialement présents
      0
    3. BelhoucineDine Messages postés 41 Statut Membre > phadeb Messages postés 91 Statut Membre
       
      Merci, a tous
      Comment puis-je vous envoyer le classeur ? ça aurait plus clair
      En cliquant sur le bouton pour la première fois l'exécution du Macro sera une seule foit
      0
    4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > BelhoucineDine Messages postés 41 Statut Membre
       
      Bonjour,

      Pour transmettre un fichier,
      Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
      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
    5. BelhoucineDine Messages postés 41 Statut Membre > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
       
      0