Copie conditionnelle d'une plage de cellule

Bonjour,

J'espère être dans le bon forum.

J'essaie sous Excel 7 de recopier une plage de cellules d'une feuille vers une autre
de manière conditionnelle.
Fichier joint

Merci

27 réponses

Résumé de la discussion

Problème rencontré sous Excel 7 : recopier une plage de cellules d'une feuille vers une autre de manière conditionnelle, avec des références à des macros et des événements de changement. La solution proposée consiste en une macro VBA qui déclenche la copie lorsque B7 contient SRD ou srd, en utilisant Worksheet_Change, puis copie B5:S9 vers la feuille 2. D'autres échanges suggèrent de ajuster les paramètres, et l'équipe indique qu'une variante a été trouvée en remplaçant un mot clé par une unité numérique, apportant une solution opérationnelle.

Bobot (l’IA à votre service)
  1. Contributeur
    Bonsoir

    "Fichier joint"

    vous dites????

    crdlmnt
    0
    1. Je l'ai envoyé par le webmail mais je ne sais pas comment le joindre pour que tu
      le vois.

      Une aide ? Merci
      0
      1. Contributeur
        Bonjour,

        le déposer sur cijoint.fr et coller ici le lien fourni.
        eric
        0
    2. Merci,

      http://www.cijoint.fr/cjlink.php?file=cj201109/cijleMy5pT.xlsx

      Dis-moi si c'est OK

      J'ai du le faire +sieurs fois.
      J'ai aussi cette adresse

      http://www.cijoint.fr/cjlink.php?file=cj201109/cijxgW2RGn.zip
      A demain Bonne nuit !
      0
      1. Contributeur
        C'est sûrement ok, mais inaccessible pour l'instant.
        cijoint.fr à pas mal de pb en ce moment, tu peux doubler sur cjoint.com
        eric
        0
    3. Bonjour

      Voici un nouveau lien Dis-moi si c'est OK

      http://www.cijoint.fr/cjlink.php?file=cj201109/cijQm53lhm.zip

      Bonne journée
      0
      1. Bonjour Doinis,

        Si tu mets ce code dans un bouton, tu peux peut-être arriver à ce que tu cherches à faire.

        Private Sub CommandButton1_Click()
        Dim imax, i
        Dim valeurcas
        
            valeurcas = Worksheets(1).Range("F1").Value
            If valeurcas = "transfert" Then
                Worksheets(1).Range("A1:B10").Select
                Selection.Copy
                Worksheets(2).Activate
                Worksheets(2).Select
                Worksheets(2).Paste
            Else
                MsgBox "Désolé, la plage ne peut être copiée"
            End If
        End Sub
        


        Note : Ici le code ne fait la copie que des 10 premières lignes de A et B uniquement si dans la cellule F1, j'ai le mot "transfert"
        0
        1. Merci Heremion
          Je n'ai jamais touché aux macro. Je vais essayer de comprendre et de le faire.

          N'y a t-il pas une formule possible (donc sans macro) pour faire la même chose ?

          As-tu pu lire mon fichier ?

          Merci DOINIS
          0
          1. Non car le site cijoint rencontre actuellement de nombreux problèmes.
            La page d'accueil, indisponible est souvent remplacée par une page d'indisponibilité qui...renvoie à la page d'accueil... merci les développeurs xD.

            En fait, pour créer une macro, il te faut l'onglet "Développeur".
            Pour cela, tu vas dans :

            Fichier > Options > Personnaliser le ruban > Onglets principaux > Activer l'onglet Développeur.

            Ensuite, dans cet onglet, tu demandes à insérer un bouton activeX sur la feuille. Une fois que tu as double-cliqué sur le bouton, cela va t'ouvrir une feuille VBA dans laquelle tu auras un squelette de ton évènement OnClick. Dans cet évènement, tu places simplement le code que je t'ai donné et en avant! :)
            0
            1. Si tu as besoin d'aide à nouveau, n'hésite pas :)
              0
              1. C'est sympa,

                Je t'avoue que je patine "sévère" !!!

                Je crois qu'il vaut mieux attendre que tu puisse ouvrir mon fichier.
                Je pense aussi que ça me donne envie de me mettre aux macro, avec lesquelles j'ai le sentiment qu'on peut faire beaucoup de choses. !!

                A bientôt j'espère, dès que tu auras pu ouvrir ce sacré fichier

                Merci encore DOINIS
                0
                1. Je viens d'arriver à le DL, tu veux recopier quelles cellules en fonction de laquelle et vers où?
                  0
                  1. Je viens de réussir à ouvrir mon fichier envoyé avec cette adresse :

                    http://www.cijoint.fr/cjlink.php?file=cj201109/cijQm53lhm.zip

                    Dis-moi si tu y arrives.

                    Merci
                    0
                    1. Oui, et je viens de le reposter avec la macro comprise. Dis-moi si cela fait bien ce que tu souhaites.

                      En fait, lorsque tu changes la valeur B5, il va copier uniquement si elle vaut "SRD" ou "srd"

                      http://www.cijoint.fr/cjlink.php?file=cj201109/cijQdi99QX.xlsm
                      0
                      1. Bonsoir

                        De nouveau impossible d'accéder au fichier réponse

                        Peut-être demain quand il y aura moins de monde branché sur le site
                        Par avance merci, mais dès que je peux accéder au fichier je te réponds

                        Bonne nuit et encore merci

                        DOINIS
                        0
                        1. Bonjour Heremion

                          Merci pour ta réponse. J'ai enfin pu ouvrir le fichier. Sur la 2° feuille (nommée SRD) je vois que tu as pu faire ce que je te demandais.
                          Je t'en remercie vivement.
                          NB : à quoi sert la 3° feuille nommée Feuil 1 ?

                          J'aimerais savoir en détail comment tu as fait pour que je puisse essayer de répéter cette opération.

                          En fait je t'ai envoyé une petite partie du fichier. Comme la chose est relativement complexe (pour moi), j'essaie de te fournir au plus tôt plus d'informations. Es-tu d'accord pour m'aider ?

                          Bonne journée DOINIS
                          0
                          1. J'ai pas fait attention, la feuil1 est une erreur de manipulation quand j'ai fait un ou deux tests. Pas besoin d'en tenir compte.

                            Pour ce qui est du code, j'ai mis en macro sur la Feuil1 ce code :

                            Private Sub Worksheet_Change(ByVal Target As Range)
                            
                                If (Target.Row = 7) And (Target.Column = 2) Then 'B7
                                    If ((Cells(7, 2).Value = "SRD") Or (Cells(7, 2).Value = "srd")) Then
                                        Worksheets(1).Range("B5:S9").Select
                                        Selection.Copy
                                        Worksheets(2).Activate
                                        Worksheets(2).Range("B5").Select
                                        'Worksheets(2).Select
                                        Worksheets(2).Paste
                                    End If
                                End If
                            End Sub


                            Pour ce qui est de t'aider, pas de souci :)
                            0
                            1. Bonjour HEREMION

                              Pas de pb pour la feuil 1 je la supprimerai

                              Y a-t-il possibilité de recopier ta macro sur une page qui fera environ 500 lignes ?

                              Lorsqu'il y a inscrit SRD dans la feuille DIV H "SRD", ça fonctionne impeccable sur l'autre feuille

                              Mais si par exemple je supprime cette inscription, y a-t-il possibilité que dans la feuille "SRD" ça revienne à un état primitif ?

                              Merci pour ton accord pour m'aider

                              Je te laisse passer le week-end tranquille.

                              A très bientôt

                              Bon week-end DOINIS
                              0
                              1. Pour ce qui est de copier une plus grande plage, il te suffit de mettre dans l'instruction ci-dessous, la plage que tu souhaites copier :

                                Worksheets(1).Range("B5:S9").Select


                                Quand tu parles de revenir à l'état primitif, tu veux dire revenir avant la copie?
                                Je vais regarder cela de plus près et te dis ça tantôt.
                                0
                                1. Bonjour HEREMION ... et bon dimanche (un peu pluvieux dans le Sud !)

                                  L'instruction " Worksheets(1).Range("B5:S9").Select " se trouve où ?
                                  N'oublie pas que je ne connais absolument rien aux macro !!!

                                  Pour l'état primitif, la réponse est oui.

                                  Mais je vais faire le véritable fichier, dans son entité et tu comprendras mieux ce que je souhaite.

                                  Je m'y mets cet après-midi ... la journée est chargée en sport ( ! ) Rugby, Tennis, Basket ... Faut gérer ! Quelle vie !

                                  A très bientôt

                                  Merci encore DOINIS
                                  0
                                  1. Dans le code que je t'avais montré au début de ce post, c'est la ligne en gras qu'il faut adapter.

                                    Private Sub Worksheet_Change(ByVal Target As Range)
                                    
                                        If (Target.Row = 7) And (Target.Column = 2) Then 'B7
                                            If ((Cells(7, 2).Value = "SRD") Or (Cells(7, 2).Value = "srd")) Then
                                                Worksheets(1).Range("B5:S9").Select
                                                Selection.Copy
                                                Worksheets(2).Activate
                                                Worksheets(2).Range("B5").Select
                                                'Worksheets(2).Select
                                                Worksheets(2).Paste
                                            End If
                                        End If
                                    End Sub
                                    0
                                    • 1
                                    • 2