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 :

modifier une plage de cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut modifier une plage de cellule
    Bonjour à tous…
    Ce n'est pas Matou83 mais son amie, qui doit finir son programme de gestion de parc informatique dans les plus brefs délais...(demain soir)
    Voilà, j’ai 2 feuilles, 1 qui me propose un choix entre plusieurs actions à effectuer et l’autre dans laquelle se trouve un tableau en 12 colonnes et x lignes (je rajoute des lignes tous les jours) avec des valeurs dans chaque ligne (aucune case vide)… le tableau commence en A8 avec la ligne A8 correspondant aux intitulés de mes colonnes.
    Une des actions que je souhaite effectuer dans ma première feuille est « modifier une fiche ».
    Pour cela j’ai crée une macro, le problème c'est que cette derniere fonctionne mais seulement pour la première cellule...d'autre part lorsque l'utilisateur annule, le copier coller ne fonctionne pas...j'ai beau chercher, je ne trouve pas les solutions...j'ai vraiment besoin d'aide...MERCI d'avance

    Macro:

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    Sub MODIFIER_FICHE()
     
    'declaration des variables
     
    Dim Plage As Range
    Dim cellule As Range
     
    'selection de la feuille données
    Sheets("données").Select
     
    'l'utilisateur doit indiquer un service afin de filter les données pour modifier une fiche
    a = InputBox("Service recherché?", "Service")
        'Si l'utilisateur clique sur le bouton Annuler,
        'la fonction renvoie une chaîne de longueur nulle ("") et un message "annulation"
        If a = "" Then
        MsgBox ("ANNULATION")
        Exit Sub
        Else
        'Sinon le texte est converti en majuscule
        Dim LowerCase, UpperCase
        LowerCase = a    ' Chaîne à convertir.    UpperCase = UCase(LowerCase)    ' Renvoie la chaine en majuscule.
        'Filtre automatique dans la colonne d avec comme critère de recherche la valeur indiquée
        ActiveSheet.Range("$A$8:$L$65536").AutoFilter Field:=4, Criteria1:=UpperCase
        On Error Resume Next
     
        'selection de la plage des cellules
        Set Plage = Application.InputBox("Selectionnez la première cellule de la ligne que vous souhaitez modifier.", "SELECTION", Type:=8)
     
         'si la personne clique sur annuler, un bouton annulation apparait et la modification est annulée
        On Error GoTo 0
        If Plage Is Nothing Then
        MsgBox ("ANNULATION")
        Exit Sub
        Else
        'sinon
        'on selectionne la ligne entière
       Plage.Select
       Range(Selection, Selection.End(xlToRight)).Select
        'on la copie
        Selection.Copy
        'modification de la plage selectionnée
         For Each cellule In Plage
         'la cellule en cours de modification est colorée
            cellule.Interior.ColorIndex = 20
          'une fenetre apparait et demande a l'utilisateur d'indiquer le nouveau critère
          'et ce tant pour chaque cellule correspondant à un critère
            a = InputBox("Nouveau critère", "Nouveau critère", "-", 9000, 9000)
            'si cependant la personne clique sur annuler un message "annulation" apparait, la modification est annulée
            'et on colle la copie de la ligne non modifiée, la ligne originale
            If a = "" Then
            MsgBox ("ANNULATION")
            cellule.Select
            ActiveSheet.Paste
            Exit Sub
            'sinon valeur entrée convertie en majuscule
            Else
            LowerCase = a
            UpperCase = UCase(LowerCase)
            cellule.Value = UpperCase
             End If
     
    Next
     
    End If
    End If
     
    End Sub

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Bonjour

    il y avait déja un Post avec la même question mise à pârt que le code était légérement différent.

    regarde ma proposition ici, évidemment i faudra adapter par rapport à ton nouveau code mais les grandes lignes sont là.

Discussions similaires

  1. [AC-2010] Importation d'une plage de cellules excel qui se modifie quotidiennement
    Par freeman3869 dans le forum Access
    Réponses: 2
    Dernier message: 18/04/2015, 00h11
  2. Definir une plage de cellule qui va être modifiée
    Par Laura27600 dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 09/10/2013, 11h58
  3. Comment modifier la valeur d'une plage de cellule
    Par shako6 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/03/2008, 19h12
  4. [VBA-E] Image d'une plage de cellule
    Par flogreg dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/07/2004, 12h30
  5. [VBA-E] [Excel] Protection d'une plage de cellules
    Par fikou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/11/2002, 11h28

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