Problème de tri

Benoist28200

XLDnaute Nouveau
Bonjour le forum,

Ci-joint le fichier.

Voici mon problème:
J'ai un planning qui se remplit par formule, il récupère les informations via la feuille "DONNÉES".
Pour enregistrer des données je sélectionne les cellules concernées dans mon planning puis je clic sur un bouton qui via macro récupère l'abscisse et l'ordonné du tableau puis la valeur à enregistrer pour l'intersection des deux. Ces données sont stockées pour un cours instant sur la feuille "TRANSIT"

Ce que j'essaie de faire, c'est de créer un boucle qui, pour toutes les lignes de la feuille "TRANSIT", filtre la feuille "DONNÉES " afin de voir si une donnée existe déjà.

A partir de là 2 choix:
1 - La valeur recherchée existe déjà, on la remplace par la nouvelle.
2 - La valeur n'existe pas, on l'ajoute.

J'ai commencé à bidouiller un truc mais ça ne fonctionne pas.

Cordialement
 

Pièces jointes

  • Planning amélioration2.xlsm
    89 KB · Affichages: 39

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir le forum
J'ai commencé à bidouiller un truc mais ça ne fonctionne pas.
Il est ou ton truc ??? TRANSIt .. c'est vierge ? ou sont tes données ? . Bouton rectangle (RTT) , tu as une variable No= .... que je ne retrouve nul part ?
Faut pas embrouiller les codes .... c'est déjà pas simple
Donc quand tu seras plus explicite et concret ..... !!!! ?
 

Benoist28200

XLDnaute Nouveau
Bonsoir @herve62

Désolé s'il reste quelques problèmes avec le code mais j' ai épurer mon fichier afin de vous l'envoyer et certaines variables sont restées.

J'ai réussi à faire quelque chose, je ne sais pas si c'est le top mais ça à l'ai de fonctionner pour l'instant.

VB:
Sub TRI()

Application.ScreenUpdating = False

For NumLigne = 1 To Sheets("TRANSIT").Range("A" & Rows.Count).End(xlUp).Row
    ValeurCherché = Sheets("TRANSIT").Range("A" & NumLigne).Value
  
'''''''''''
''DONNÉES''
'''''''''''
    'On filtre la valeur recherchée
    Sheets("DONNÉES").ListObjects("TableauDONNÉES").Range.AutoFilter Field:=1, _
        Criteria1:=ValeurCherché
      
    'On copie la valeur à ajouter ou modifier
    NumValModif = Sheets("DONNÉES").Range("A1").End(xlDown).Row
    ValModif = Sheets("DONNÉES").Range("A" & NumValModif).Value
  
    'Si valeur trouvée
    If ValModif = ValeurCherché Then
                With Sheets("DONNÉES")
                .Range("B" & NumValModif & ":E" & NumValModif).Value = Sheets("TRANSIT").Range("B" & NumLigne & ":E" & NumLigne).Value
                End With
                  
    'Si pas trouvée
    Else
        Sheets("DONNÉES").ListObjects("TableauDONNÉES").Range.AutoFilter Field:=1
        No = Sheets("DONNÉES").Range("B" & Rows.Count).End(xlUp).Row + 1
            With Sheets("DONNÉES")
                .Range("B" & No & ":E" & No).Value = Sheets("TRANSIT").Range("B" & NumLigne & ":E" & NumLigne).Value
            End With
          
    End If
  
  
''''''''
''SAVE''
''''''''
    'On filtre la valeur recherchée
    Sheets("SAVE").ListObjects("TableauSAVE").Range.AutoFilter Field:=1, _
        Criteria1:=ValeurCherché
      
    'On copie la valeur à ajouter ou modifier
  
    NumValModif = Sheets("SAVE").Range("A1").End(xlDown).Row
    ValModif = Sheets("SAVE").Range("A" & NumValModif).Value
  

    'Si valeur trouvée
    If ValModif = ValeurCherché Then
                With Sheets("SAVE")
                .Range("B" & NumValModif & ":E" & NumValModif).Value = Sheets("TRANSIT").Range("B" & NumLigne & ":E" & NumLigne).Value
                End With
                  
    'Si pas trouvée
    Else
        Sheets("SAVE").ListObjects("TableauSAVE").Range.AutoFilter Field:=1
        No = Sheets("SAVE").Range("B" & Rows.Count).End(xlUp).Row + 1
      
            With Sheets("SAVE")
                .Range("B" & No & ":E" & No).Value = Sheets("TRANSIT").Range("B" & NumLigne & ":E" & NumLigne).Value
            End With
          
    End If
  
  
    'On enlève le filtre
    Sheets("DONNÉES").ListObjects("TableauDONNÉES").Range.AutoFilter Field:=1
    Sheets("SAVE").ListObjects("TableauSAVE").Range.AutoFilter Field:=1

Next NumLigne

Sheets("TRANSIT").Cells.Clear
Sheets("PLANNING").Select

End Sub

Cordialement
 

herve62

XLDnaute Barbatruc
Supporter XLD
J'ai remplacé ta sub Tri par celle que tu viens de mettre ci-dessus ,mais bon ......!!
VB:
With Sheets("SAVE")
                .Range("B" & NumValModif & ":E" & NumValModif).Value = Sheets("TRANSIT").Range("B" & NumLigne & ":E" & NumLigne).Value
                End With
Comment peux tu affecter à une plage de ta feuille SAVE des données qui n'existent pas de la feuille TRANSIT ???
 

Benoist28200

XLDnaute Nouveau
Re @herve62

Ci-joint le fichier .

Quand je clic sur les "boutons" de la feuille "PLANNING", les données sont stockées provisoirement sur la feuille "TRANSIT" le temps de voir s'il y a doublon puis copiées sur les feuilles "DONNÉES" et "SAVE"
 

Pièces jointes

  • Planning amélioration2.xlsm
    95.1 KB · Affichages: 15

herve62

XLDnaute Barbatruc
Supporter XLD

Discussions similaires

  • Résolu(e)
Microsoft 365 Tri et Import
Réponses
4
Affichages
168

Statistiques des forums

Discussions
312 203
Messages
2 086 196
Membres
103 153
dernier inscrit
SamirN