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

B

Benoist28200

Guest
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

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
 
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 ???
 
- 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

Retour