IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Remplacer une ligne dans une feuille si elle existe déja lors de sauvegarde. [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2019
    Messages : 32
    Points : 28
    Points
    28
    Par défaut Remplacer une ligne dans une feuille si elle existe déja lors de sauvegarde.
    Bonjour,

    je sauvegarde la valeur des textbox et combobox dans une feuille.

    j'aimerai que on ne puisse pas sauvegarder plusieurs fois la même ligne, vérifier si la ligne existe déjà dans la feuille, si oui alors on remplace son contenu.

    Merci de l'aide

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    As-tu un identifiant unique qui permette de retrouver cet élément ?

    Si oui, une méthode simple est d'utiliser le RECHERCHEV (VLOOKUP). Si tu ne récupère pas #N/A, c'est que l'élément existe déjà.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2019
    Messages : 32
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Bonjour.

    As-tu un identifiant unique qui permette de retrouver cet élément ?

    Si oui, une méthode simple est d'utiliser le RECHERCHEV (VLOOKUP). Si tu ne récupère pas #N/A, c'est que l'élément existe déjà.

    A+
    oui, j'arrive à trouvé la ligne dans la faucille et la sélectionné, mais je ne sais pas comment faire pour remplacer le contenu ancien par le nouveau contenue.

    j'ai mis le fichier en exemple, j'ai laissé le ????? ou je dois mettre qqch pour que ça fonctionne.

    le fichier enregistre avec le bouton "Save".

    Pièce jointe 502477

    Merci d'aide.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Pardon j'avais manqué l'étape "remplacer".

    Avec EQUIV() (MATCH()), tu peux trouver la ligne qui correspond à la recherche et après le remplacement devrait être assez simple.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2019
    Messages : 32
    Points : 28
    Points
    28
    Par défaut
    c'est le remplacement que je n'arrive pas à faire.

    je ne sais pas si tu as essayé mon fichier d'exemple, il faut enregistré une 1ere fois, et ensuite si t clique une 2ème fois sur le bouotn Save Data, alors il trouve la ligne et sélectionne, mais je n'arrive pas à remplacer le contenue.

    je cherche avec la méthode Find.

    il faut essayé à pas à pas.

    merci

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Non je n'ai pas essayé ton fichier car pour des raisons de sécurité je ne peux pas le télécharger.

    Peux-tu poster ton code actuel ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2019
    Messages : 32
    Points : 28
    Points
    28
    Par défaut
    le voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    Private Sub CommandButton_SaveData_Click()
     
      Dim I As Long, Plage, Fnd As Range, Ligne, test, test2 As Long, Nom As String
      Dim Ctrl As Control
     
      Application.DisplayAlerts = False
     
        If MsgBox("Are you sure you want to save your changes?", vbYesNo, "Confirmation request") = vbYes Then
            With Sheets("Param") ' charge les param?tre
                Set Plage = .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
            End With
     
            With Sheets("DB Application")
            Sheets("DB Application").Select
                Ligne = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
                ' cherche la val dans la colonne A
                Set Fnd = .Range("A3", .Cells(Rows.Count, "A").End(xlUp)).Find( _
                What:=Me.TextBox_EquipementSAP.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchDirection:=xlPrevious)
     
                If Not Fnd Is Nothing Then  ' si trouve la ligne d?ja enregistr?
     
                    For I = 1 To 89     ' travaille sur les colonne 1 ? 89
                        Nom = Plage(I).Offset(, 1)
                        If Nom <> "" Then
                            If TypeName(Me.Controls(Nom)) = "CheckBox" Then ' si checkbox activer
                                If Me.Controls(Nom).Value = True Then
                                    Fnd.EntireRow.Select
                                    test2 = .Cells(Ligne, I) = "YES"
                                    ?????.Replace What:=?????, Replacement:=???'
                                End If
                            Else
                                Fnd.EntireRow.Select
                                test = Me.Controls(Nom).Value
                                ?????.Replace What:=?????, Replacement:=???'
                            End If
                        End If
                    Next I
     
                Else    ' si ?lement n'est pas encore enregistr?
                    For I = 1 To 89
                        Nom = Plage(I).Offset(, 1)
                        If Nom <> "" Then
                            If TypeName(Me.Controls(Nom)) = "CheckBox" Then
                                If Me.Controls(Nom).Value = True Then
                                    .Cells(Ligne, I) = "YES"
                                End If
                            Else
                                .Cells(Ligne, I) = Me.Controls(Nom).Value
                            End If
                        End If
                    Next I
                 End If
            End With
        End If
        Application.DisplayAlerts = True
    End Sub
    Merci

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ?????.Replace What:=?????, Replacement:=???'
    Tu as utilisé Replace. Souhaites-tu substituer une partie de l'information présente par une autre ?

    Parce sinon, si tu veux changer la valeur entière, il suffit d'assigner la nouvelle valeur dans la cellule et cela va la mettre à jour.

    Peut-être devrait décrire sommairement ce que "remplacer" signifie pour toi.

    Par exemple "Je veux que les 3 derniers caractères du contenu de la cellule soit remplacés par le ce qui est dans ma textbox.".

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2019
    Messages : 32
    Points : 28
    Points
    28
    Par défaut
    je solution me convient: "Parce sinon, si tu veux changer la valeur entière, il suffit d'assigner la nouvelle valeur dans la cellule et cela va la mettre à jour."

    je vais essayé.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Incrémenter d'une ligne dans la feuille l'écriture de la saisie d'une textbox
    Par iriane dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 26/08/2010, 16h40
  2. [XL-2003] Supprimer une feuille si elle existe, sinon la créer
    Par nekcorp dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/10/2009, 11h03
  3. suppression d'une feuille si elle existe
    Par benoi dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/12/2008, 20h56
  4. Supprimer une colonne d'une feuille si elle est vide dans une autre
    Par xave dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 27/02/2008, 14h05
  5. [VBA-E] ajout d'une ligne dans 2 feuilles
    Par PHPdudimanche dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/12/2006, 10h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo