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 :

{VBA Excel}programme pour remplacer valeurs


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut {VBA Excel}programme pour remplacer valeurs
    bonjour

    j'ai un probleme de programation que je n'arrive pas a faire tous seul

    je voudrais en cliquant sur un bouton remplacer dans la colonne E a partir d'un numero de ligne que j'obtient de la celule active en k par exemple

    remplacer les 6 chiffres a la suite


    Exemple

    dans la colonne E j'ai 6 fois 1 a partir de la ligne 32
    quand ma cellule active est sur la colone k et ligne 32 et que je clique sur le bouton
    je remplace les six 1 par des 2



    si vous pouviez me donner un coup de main je vous en remercie d'avance

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Essaic ce code

    A mettre dans le click de ton bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    If ActiveCell.Column = 11 Then
     
        Range("E" & ActiveCell.Row & ":E" & Range("E1").End(xlDown).Row).Select
        Selection.Replace What:="1", Replacement:="2", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
     
    End If

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    c'est le genre de programme mais le bemol

    c'est que si je suis a la ligne 32 tous les chiffres 1 avant la ligne 32 sont remplacé alors que je voudrait bien l'inverse


    mais surtout c'est de controler la copie c'est a dire que de remplacer 5 fois 1 et non tous les 1



    j'ai essayer ca


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub bijour()
    If ActiveCell.Column = 11 Then
     
     i = 2
        Range("E" & ActiveCell.Row & ":E" & Range("E1").End(xlDown).Row + i).Select
        Selection.Replace What:="1", Replacement:="2", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
     
    End If
     
    End Sub

    mais avec ce code je remplace tous les 1 sauf les 2 er

    si tu pouvais me donner un coup de pouce supplémentaire
    merci

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    ben je te remercie Gorfael c'est justement ce que je cherchais a faire

    merci pour tous a vous deux

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    j'ai voulus amiliorer le code pour effacer les 5 cases suivantes mais ca ne m'efface qu'une case si on pouvait m'expliquer

    Merci

    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
    Sub test()
    Dim Lig As Long
    Dim X As Integer
    If Selection.Column = Columns("L").Column Then
        Lig = Selection.Row
        For X = 0 To 4
            If Range("E" & Lig).Offset(X, 0) <> 1 Then Exit Sub
        Next X
        For X = 0 To 4
            Range("E" & Lig).Offset(X, 0) = 2 And Range("E" & Lig + 5).ClearContents
        Next X
     
     
    End If
     
     
    End Sub
    j'ai trouver la solution en recopiant plusieurs fois And Range("E" & Lig + 5).ClearContents


    si vous avez plus simple je suis prenneur au pire je me contente de ca

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For X = 0 To 4
    ' Pour x=0 à 4
    Range("E" & Lig).Offset(X, 0) = 2 And Range("E" & Lig + 5).ClearContents
    ' Je sais même pas comment Excel l'interprête le seul code que je comprennes est :
    Range("E" & Lig + 5).ClearContents
    ' effacer le contenu de la cellule colonne E, ligne Lig+5 (qui est fait 5 fois)
    ' je vois pas à quoi doit servir le "=2"
    Next X
    Je crois avoir compris mais....
    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
     
    If Selection.Column = Columns("L").Column Then
    Lig = Selection.Row
    For X = 0 To 4
    If Range("E" & Lig).Offset(X, 0) <> 1 Then Exit Sub
    Next X
    'on vérifie la présence des 1, sinon on sort
    For X = 0 To 4
    Range("E" & Lig).Offset(X, 0) = 2 
    'On affecte 2 à la colonne E
    Range("E" & Lig + 5).offset(x,0).ClearContents
    'ou
    'Range("E" & Lig).Offset(X+5, 0).ClearContents
    'On efface les 5 lignes suivantes
    Next X
    End If
    J'espère que c'est bien ça ?
    Dans VBA, il vaut mieux éviter d'effectuer plusieurs actions ensemble. ça rend le code moins lisible, et c'est rarement admis par le compilateur

    AND, OR, etc. sont des opérateur logiques : ce ne sont pas des fonctions du code. Tu ne peux par ecrire
    Faire code1 AND code2
    Faire code1 Or code2
    Ils ne servent qu'à donner une réponse logique (0 ou -1 en VBA)
    Pour le ET, il suffit de faire 2 lignes
    Code1
    Code2

    Pour le OU, il faut un test qui détermniera quelle opération sera exécuter : Excel ne décide jamais rien, il suit les instructions qu'on lui donne. Il ne fait pas ce qu'on veut, seulement ce qu'on lui dit de faire
    A+

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    Range("E" & Lig + 5).offset(x,0).ClearContents


    merci grace a toi je viens de comprendre mon erreur
    et tu as raison plus le programme est jolie plus c'est lisible

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Citation Envoyé par Thomas69
    bonjour

    j'ai un probleme de programation que je n'arrive pas a faire tous seul

    je voudrais en cliquant sur un bouton remplacer dans la colonne E a partir d'un numero de ligne que j'obtient de la celule active en k par exemple

    remplacer les 6 chiffres a la suite


    Exemple

    dans la colonne E j'ai 6 fois 1 a partir de la ligne 32
    quand ma cellule active est sur la colone k et ligne 32 et que je clique sur le bouton
    je remplace les six 1 par des 2



    si vous pouviez me donner un coup de main je vous en remercie d'avance
    Salut
    Pas tout compris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Sub test()
    Dim Lig As Long
    Dim X As Integer
    If Selection.Column = Columns("K").Column Then
        Lig = Selection.Row
        For X = 0 To 5
            If Range("E" & Lig).Offset(X, 0) <> 1 Then Exit Sub
        Next X
        For X = 0 To 5
            Range("E" & Lig).Offset(X, 0) = 2
        Next X
    End If
    End Sub
    Si la cellule en haut à gauche de la sélection est sur la colonne K, si les 6 cellules de la colonne E à partir de la première ligne de la sélection contiennent des 1, les remplacer par des 2

    En espèrant que ça réponde à la question
    A+

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

Discussions similaires

  1. [VBA-EXcel] Timer pour mise jour automatique
    Par Dos dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/09/2006, 20h36
  2. [VBA-EXCEL]-condition pour ouvrir une msgbox
    Par captaine93 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/08/2006, 20h51
  3. [VBA Excel] Userform pour supprimer une ligne précise
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/06/2006, 14h32
  4. [VBA-Excel] aide pour maccro (selection)
    Par Fealendril dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/02/2006, 08h53
  5. [VBA-Excel]Problème pour remplir une listview
    Par Le Djé dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/01/2006, 16h27

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