Modification colonne

Bonjour a tous,

Je rencontre des difficultees pour actualiser automatiquement les donnees d'une colonne en fonction d'autres colonnes.

Je voudrais que la colonne A s'actualise automatiquement en fonction des donnees de la colonne B (ajout de donnees) et de la colonne C (suppression de donnees).

L'idee serait egalement que meme si la donnee est affichee dans la colonne B, si elle apparait dans la colonne C alors elle est supprimee de la colonne A.

Exemple :

Etat actuel

Colonne 1

Colonne 2 (pour ajout)Colonne 3 (pour retrait)
ChienChevre

Lapin

LapinVacheCochon
OursBaleine
Alligator
Poisson

Cochon

Etat desire

Colonne 1Colonne 2 (pour ajout)Colonne 3 (pour retrait)

Chien

ChevreLapin
OursVacheCochon
Alligator
PoissonBaleine
Chevre
Vache
Baleine

Je suis debutante en VBA. Auriez-vous une idee de comment faire ?

Mille mercis

Bonjour Eloier et bienvenue,

Ouvrir un nouveau fil n'était pas la bonne idée : il aurait mieux valu ajouter un fichier exemple et surtout fournir plus d'explications sur la manipulation ... et aussi sur le contexte : dans quel cas serait-on amené à faire ce genre de choses ? La manipulation se fera une unique fois ou elle va se répéter ?

Si on ne comprend pas la demande, on attend en général qu'elle se clarifie ; créer un doublon n'arrangera pas tes affaires, j'en ai peur !

On attend donc avec impatience des infos complémentaires

Je rejoins U. Milité sur le fait que ça ne sert à rien de créer un doublon sans apporter plus d'informations.

Avec les informations qui sont fournies j'ai tenté quelque chose, mais sans grand espoirs:

Sub test()
Dim ligFin As Long

For i = 1 To getLastRow("C")
    'supression de la liste ajout si trouvé
    For j = getLastRow("B") To 1 Step -1
        If Range("B" & j) = Range("C" & i) Then
            Range("B" & j).Delete shift:=xlShiftUp
            Exit For
        End If
    Next j

    'supression si trouvé
    For j = getLastRow("A") To 1 Step -1
        If Range("A" & j) = Range("C" & i) Then
            Range("A" & j).Delete shift:=xlShiftUp
            Exit For
        End If
    Next j
Next i

ligFin = getLastRow("A")
For i = 1 To getLastRow("B")
    If Not Range("B" & i) = "" Then
        'teste que la valeur ne soit pas déjà présente dans le tableau en comptant le nombre de fois qu'elle apparait
        If Application.WorksheetFunction.CountIf(Range("A1:A" & ligFin), Range("B" & i)) = 0 Then
            Range("A" & ligFin + 1) = Range("B" & i)
            ligFin = ligFin + 1
        End If
    End If
Next i
End Sub

Function getLastRow(col As String) As Long
getLastRow = Range(col & Rows.Count).End(xlUp).Row
End Function

Bonjour,

Tout d'abord, je vous remercie pour vos reponses et vos conseils.

En realite, ce qui m'interesse est de realiser une mise a jour automatique des effectifs.

Dans le fichier que je possede, tout est ajoute et retire a la main.

Je souhaite donc que les donnees qu'on ajoute en colonne B (entree) soit automatiquement copiees en colonne A (effectifs). En revanche, il faudrait que les donnees ajoutees en colonnes C (sortie) soient supprimees de la colonne A. Les donnees deja presentes en colonne A ont ete entree sans reference dans la colonne B doivent rester.

J'espere que c'est un peu plus clair. Desole pour le mesusage.

Bonjour,

Je n'ai pas compris cette phrase...

Les donnees deja presentes en colonne A ont ete entree sans reference dans la colonne B doivent rester.

Pouvez-vous l'expliquer plus clairement s'il vous plait?

Bonjour,

Oui, bien sur. Dans la colonne A se trouve les noms des personnes qui font actuellement partie de nos effectifs. La date d'entree de ces personnes n'a pa ete renseignee. Pour autant, il ne faut pas que leur nom disparaisse de la liste des effectifs.

Est-ce que c'est plus clair.

Excellente journee

Donc si j'ai bien compris ça devrait faire l'affaire:

Un grand merci Ausecour pour votre aide.

Bonne journee :)

Rechercher des sujets similaires à "modification colonne"