Insertion d'une colonne fixe

Bonjour,

Je souhaiterais inserer une colonnes fixe dans un nouveau fichier ou j'insert une nouvelle base de données chaque jour.
Le commentaire que j'inscrit dans cette colonne devra rester visible maglré l'incrémentation d'un nouveau fichier ....

8 réponses

Résumé de la discussion

Insertion d'une colonne fixe dans un fichier Excel et persistance d'un commentaire associé malgré l'incrémentation quotidienne de nouveaux fichiers. Les réponses privilégient une approche VBA avec TransfererRem, utilisant Option Explicit et des boucles sur les lignes et colonnes pour enregistrer et réappliquer les commentaires. D'autres échanges proposent d'ajouter une colonne via une instruction simple Columns("E:E").Insert, ou d'explorer le lien entre classeurs pour que les valeurs et les commentaires demeurent cohérents lors des mises à jour quotidiennes. Une remarque soulevée concerne que la suppression ou le déplacement de lignes peut faire disparaître les commentaires, ce qui invite à concevoir des mécanismes de synchronisation ou de réaffectation des commentaires.

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

    Essaie avec :
    Columns("E:E").Select
    Selection.Insert Shift:=xlToRight
    1. Merci Heliotte,
      Pour l'insertion de colonne cela marche très bien.
      Mais par contre j'ai toujours mon souci...(le commentaire que j'écris dans la colonne disparait une fois que je remplace la feuille existance par une autre feuille du même format avec son incrematation... )
      Donc je voudrais savoir comment garder mon commentaire visible pour qu'il apparaisse à chaque fois, malgré que la feuille change tout le temps.
      1. Bonjour pinguuu,
        Si tu supprime une feuille, il me parait évident que tu n'ai plus de valeurs, dans aucune cellule.
        Si tu veux absolument récupérer le commentaire, par cellule, il faut mémoriser dans une variable (tableau peut-être), le contenu, supprimer la feuille désirée et finalement, écrire le commentaire dans la cellule désirée.
        1. Bonjour Heliotte,
          Il faudrait crée un genre de boucle ?
          Faire un autre tableau qui récapitule les erreur possible ?
          Et insérer le tout dans mon fichier de synthèse ?
          Mais le but étant que le commentaire s'insère le plus automatiquement possible.
          1. Dans le cas ou il n'y a qu'un seul commentaire et que tu es certain de le trouver, disons dans la cellule "G:10", il n'y a pas de boucle à mettre en place.
            Dans tous les autre cas, il faut effectivement faire une boucle.
            Si tu es certain que ce commentaire ne concerne qu'une seule et unique cellule, trois variables au maximum sont nécessaires: 1 pour stocker la colonne, 1 pour stocker la ligne et une pour stocker la valeur. Dans les autres cas, il te faudra bien un tableau. Chaque élément du tableau peut recevoir toutes les données dans ce format: tablo(n) = "NoColonne|NoLigne|Commentaire écrit dans la colonne".
            Ensuite, pour chaque élément du tableau, il faut splitter en trois variables, 1 pour le numéro de colonne, 1 pour le numéro de ligne et une pour le commentaire. De cette façon chaque commentaire est placé au bon endroit.
          2. Merci Heliotte,
            Effectivement je suis plutôt dans le numéro 2
            Mon commentaire est à placer dans plusieurs cellules ( et ce commentaire peut varier d'une cellule à l'autre)
            Quelle genre de boucle serait la mieux adapté ?
          3. C'est Excel ?
            Donc VBA.
            Option Explicit
            Private Tablo() As String
            
            Private Sub TransfererRem
            ....Dim C As Integer, L as Integer
            ....Dim PL As Integer,DL As Integer ' PL:PrmièreLigne,DL:DernièreLigne
            ....Dim PC As Integer,DC As Integer ' PC:PrmièreColonne,DC:DernièreColonne
            ....'
            ....Redim Tablo(0)
            ....For L = PL To DL
            ........For C=PC To DC
            ............If(Cells(C, L).Value <> "") Then
            ................Redim Preserve Tablo(Ubound(Tablo)+1)
            ................Tablo(Ubound(Tablo) ) = Trim(Str(C)) & "|" & Trim(Str(L)) & "|" & Cells(C, L).Value
            ............End If
            ........Next C
            ....Next L
            End Sub


            Et quand tu récupère les valeurs du tableau :
            Dim tSplt As Variant
            For i=Lbound(Tablo) To Ubound(Tablo)
            ....tSplit = Split(Tablo(i))
            ....Cells(Val(tSplit(0)), Val(tSplit(1))).Value = tSplit(2)
            Next i

            N'oublies pas d'ajouter les noms de feuilles!
          4. Merci pour se code,
            Mais je n'arrive pas à l'executer :/
            L'erreur 1004 aparait sur la ligne If(Cells(C, L).Value <> "") Then
            et j'ai bien ajouté le nom de mes feuilles
        2. J'ai fait une erreur::pas testé le code pondu
          Option Explicit
          
          Private Tablo() As String
          
          Private Sub TransfererRem()
              Dim C As Integer, L As Integer
              Dim PL As Integer, DL As Integer ' PL:PrmièreLigne,DL:DernièreLigne
              Dim PC As Integer, DC As Integer ' PC:PrmièreColonne,DC:DernièreColonne
              '
              PL = 1: PC = 1
              DL = 5: DC = 5
              ReDim Tablo(0)
              ' *----------------------------------*
              ' * Récupérer les valeurs nécessaire *
              ' *----------------------------------*
              Sheets("Feuil1").Select
              For L = PL To DL
                  For C = PC To DC
                      If (Cells(C, L).Value <> "") Then
                          ReDim Preserve Tablo(UBound(Tablo) + 1)
                          Tablo(UBound(Tablo)) = Trim(Str(C)) & "|" & Trim(Str(L)) & "|" & Cells(C, L).Value
                      End If
                  Next C
              Next L
              ' *-------------------------------*
              ' * Ecrire les valeurs nécessaire *
              ' *-------------------------------*
              Sheets("Feuil2").Select
              Dim i As Integer, tSplit As Variant
              For i = 1 To UBound(Tablo)
                  tSplit = Split(Tablo(i), "|")
                  Cells(Val(tSplit(0)), Val(tSplit(1))).Value = tSplit(2)
              Next i
          End Sub

          Maintenant cela devrait être correct !
          1. Merci Heliotte cela marche très bien !!!!
            Je souhaiterais encore apporter quelque modifications à se programme
            Est il possible de mettre en relation la cellule cible avec la ligne correspondante.
            Exemple dans la base de donné qui evolu chaque jour il y a des lignes qui ont était supprimées.
            Je souhaiterais alors que mon commentaire qui était en face de ces lignes soit eux aussi supprimés automatiquement.
            1. Je suppose que oui, mais ..
              Tu veux récupérer les cellules contenant des commentaires de la feuille "1" et les écrire dans les mêmes cellules de la feuille "2" ==> Ca, c'est fait.
              Alors, je ne comprends pas ce que vient faire ici des valeurs d'une base de données!
              Plus d'explications ?
              1. Il est vrai que cela semble un peu flou.
                Ce que je veux dire c'est que les valeurs de ma feuille 1 varie chaque jour.
                Exemple j'ai plusieurs article un jour et d'autres le lendemain
                Feuille1 ARTICLE COMMENTAIRES Feuille2 ARTICLE COMMENTAIRES
                B erreur B erreur
                C C
                D erreur D erreur
                E E
                La cela marche très bien
                le lendemain dans ma feuille 1 j'ai des nouveaux articles
                ARTICLE COMMENTAIRES Feuille2 ARTICLE COMMENTAIRES
                C C erreur
                D D
                E E erreur
                F F

                En feuille cela n'a pas suivi
                On voit que l'article B a disparu
                Ce que je souhaiterais c'est que mon commentaire se supprime en meme temps que la ligne B.
                Qu'il y est une sorte de lien entre le commentaire et la ligne.
              2. Excuse-moi pinguuu,
                Cela devient de plus en plus flou !
                On parlait de cellules, et maintenant tu parles de lignes. Je t'avoue y perdre mon latin
                Peux-tu mettre un exemple de ce que tu as on départ les jours 1, 2 et 3 par exemple, et A PART, ce que tu veux comme résultat ?
                Tu peux déposer des fichiers sur "CiJoint.com" et nous mettre le lien dans ton prochain message si tu veux, car comme ça, perso je voit pas du tout ce que tu souhaite comme résultat.
                En fait je crains que tu veuille tout concaténer, et si c'est ça, tu va très vite avoir des volumes de texte à ne plus savoir qu'en faire .. mais j'ai probablement mal interprété ton souhait.
              3. Effectivement Heliotte je comprends que cela est compliqué
                mais voila ce que je souhaite
                jour 1
                feuille1 article commentaire.......feuille2 article commentaire
                ............A........erreur............................A.......erreur
                ............B............................................B
                ............C............................................C
                ............D.......erreur.............................D........erreur
                Jour2
                feuille1 article commentaire.......feuille2 article commentaire
                ...........B.............................................B
                ...........C.............................................C
                ...........D........erreur.............................D.......erreur
                ...........E.............................................E
                Si je parle de ligne maintenant c'est pour la mettre en lien avec ma cellule
                Il faudrait que ma cellule erreur puisse se supprimer automatiquement en lien avec la ligne A comme dans l'exemple
              4. Qu'as-tu comme indication te donnant l'envie de supprimer la ligne A .. C'est parce que dans le "Jour2", il n'y a pas d'informations sur la ligne "A" ? C'est ça ?
              5. Enfin cela signifie que la ligne A a été traitée
                Donc on la supprime
            2. Pour l'instant le programme marche bien et je t'en remercie
              Juste sur ce dernier point qui n'est peut etre pas réalisable je ne sais pas ce que tu en pense ?
              relier la ligne d'un fichier qu'on vient d'insérer dans le nouveau classeur ouvert avec une cellule de la feuille du classeur ouvert.
              1. Admettons que tu veuille lier la cellule "A1" du classeur "1" à la cellule 'X12" du classeur "2", c'est à dire que la cellule "A1", classeur "1" va afficher la valeurs de la cellule "X12", classeur "2", même si on change sa valeur.
                Tu ouvres les deux classeurs,
                tu te positionne dans la cellule dont tu veux qu'elle prenne la valeur de l'autre (même si quelq'un la modifie),
                Tu 'tapes "=" (le signe égal),
                Tu clisues dans la cellule dont la valeur peut-être changée,
                Tu fait "Enter" .. et le tour est joué
                Dans la cellule de départ, tu drait voir quelque chose comme :
                ='[NomDuClasseur]NomDeLaFeuille'!$NoColonne$NoLigne
              2. bonjour Heliotte
                cela marche très bien il reste un petit hic
                quand dans ma feuille1 la ligne auquel le commentaire est attaché le commentaire disparait bien
                mais en revanche dans ma feuille2 la ligne disparait aussi ma pas le commentaire associée
                est ce normal ?
              3. Wablieft ? Est-on toujours dans ce cas-ci ? Admettons que tu veuille lier la cellule "A1" du classeur "1" à la cellule 'X12" du classeur "2", c'est à dire que la cellule "A1", classeur "1" va afficher la valeurs de la cellule "X12", classeur "2", même si on change sa valeur.
                Si tu "deletes" le contenu de "A1" du classeur "1" .. tu supprime la référence, ce qui signifie que tu as beau changer la valeur de "X12" du classeur "2" .. la valeur de "A1" du classeur "1" ne changeras plus.
              4. oui oui on est toujours dans se cas la
                je veux sans doute faire quelque chose qui n'exsiste pas alors :/
              5. [Classeur 1, Cellule A1.Value] = [Classeur 2, Cellule X12.Value] :
                Quand tu change la valeur de [Classeur 2, Cellule X12], automatiquement la valeur de [Classeur 1, Cellule A1] est remplacée par la valeur de [Classeur 2, Cellule X12]
                Ce que je ne comprends pas, c'est la raison de supprimer [Classeur 1, Cellule A1] ?