Copier nouvelle valeur dans ancienne colonne

Bonjour Tous;

Encore un probleme....

Je voudrais une fonction en vba ou autre qui fait le travail suivant :

Rechercher un mot d'une colonne A dans une colonne B , si ce mot existe pas dans la colonne B , il faudra recopier ce mot sur la derniere ligne de la colonne A

Ca a l'air cimple mais bon ....

merci d'avance

Bonjour,

avec ce code, tu recherches toutes les valeurs de la colonne A dans la colonne B

Si ce mot n'est pas trouvé, il est ajouté dans la première cellule non vide de la colonne B

Sub cherche_et_ajoute()
For Each cel In Range("A1:A" & [A65000].End(xlUp).Row)
Set c = Columns("B:B").Find(What:=cel, LookIn:=xlValues, _
        LookAt:=xlWhole)
If c Is Nothing Then [B65000].End(xlUp)(2) = cel
Next cel
End Sub

Si le mot fait partie d'autres mots dans les cellules, remplace xlWhole par xlPart

Meric felix , le code marche super bien j'ai juste été un peu en retard pour le voir , mais la ca marche trés bien , sauf que j'ai le probleme suivant :

la colonne A de ta formule est la colonne A d'un feuille appellée ABG2008

Et la colonne B est dans une autre feuille appelée abg2007

comment puis je faire pour integrer ca dans ma formule ?

Merci D'avance

Private Sub CommandButton4_Click()

For Each cel In Range("A1:A" & [A65000].End(xlUp).Row)
Set c = Columns("B:B").Find(What:=cel, LookIn:=xlValues, _
        LookAt:=xlWhole)
If c Is Nothing Then [B65000].End(xlUp)(2) = cel
Next cel

End Sub

Bonjour,

tu peux essayer comme ceci :

Private Sub CommandButton4_Click()
For Each cel In Sheets("ABG2008").Range("A1:A" & Sheets("ABG2008").[A65000].End(xlUp).Row)
With Sheets("abg2007")
    Set c = .Columns("B:B").Find(What:=cel, LookIn:=xlValues, _
            LookAt:=xlWhole)
    If c Is Nothing Then .[B65000].End(xlUp)(2) = cel
End With
Next cel
End Sub

Cependant, je pense que tu veux écrire dans la feuille ABG2008, après vérification de l'existence dans la feuille ABG2007.... (dans ce cas, inverse les feuilles)

Merci felix pr la reponse rapide ... j'ai lancé un code sur excel et ca prendre encore pas mal de temps parceque ma base de donnée est enorme.

Mais en attendant et avant d'essayer le code, j'ai une petite demande :

Feuil1 = abg2007

Feuil2 = ABG2008

Il faut comparer a partir de A2 de ABG2008

Et rajouter les valeurs nouvelles a partir de H3 de abg2007

et eske 'est possible de combiner 2 opertions ? c'est a dire colle A (ABG2008) avec H (abg2007) comme on vient de faire , et colonne B (ABG2008) avec colonne I (abg2007)

Merci encore

Re-,

comme je ne suis pas sûr de tout comprendre, te serait-il possible de joindre un fichier exemple, avec ce que tu veux?

Fichier exemple exempt de toutes données confidentielles

Aucun probleme Je joins l'url du fichier

Ce que je sohaite faire , c'est compare A et B de ABG2008 , avec H et I de abg2007

Dans ABG2008 il y a forcement plus de references , et je vus que le code m'ajoute ces nouvelles references dns H et I de abg 2007

ABG2008 = Nouveau fichier avec nouvelles references

abg2007 = Ancien fichier et moins de references

MErci

Re-,

Effectivement, en faisant une boucle, c'était un peu long.....

J'ai adopté une autre méthode

Je passe le calcul en manuel et le raffraichissement de l'écran à Faux (gain de temps)

tout d'abord, j'insère un nom de plage (base), qui englobe toutes les données de la colonne H de la feuille 2007

J'insère une colonne dans la feuille2008 (au cas où)

J'insère dans cette colonne la formule : =NB.SI(base;A2), ceci me permet de savoir si la donnée de 2008 se retrouve dans 2007

Je force le calcul sur la colonne D

Je fais un filtre sur la valeur "0" (donc, les données non présentes dans la feuille 2007)

Je copie les cellules visibles

Je colle ces cellules (format spécial, uniquement les valeurs) dans la première cellule vide de la colonne H

J'enlève le filtre sur 2008

je supprime la colonne D

Et voili...

dans le code de la feuille, tu mets ceci :

Private Sub CommandButton4_Click()
Call copier_différences
End Sub

puis dans un module standard (insertion/Module), tu colles ce code :

Sub copier_différences()
With Application
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
End With
Dim pl As Range
Set pl = Range("H3:H" & Range("H65536").End(xlUp).Row)
pl.Name = "base"
With Sheets("ABG2008")
    .Columns("D:D").Insert Shift:=xlToRight
    .Range("D2").FormulaR1C1 = "=COUNTIF(base,RC[-3])"
    .Range("D2").AutoFill Destination:=.Range("D2:D" & .[A65000].End(xlUp).Row)
    .Range("D2:D" & .[A65000].End(xlUp).Row).Calculate
    .Range("D1").AutoFilter Field:=4, Criteria1:="0"
    .Range("A2:B" & .[A65000].End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy
    [H65000].End(xlUp)(2).Select
    Selection.PasteSpecial Paste:=xlPasteValues
End With
Sheets("ABG2008").Select
[A1].AutoFilter
Columns("D").Delete
Sheets("abg2007").Select
With Application
    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
End With
End Sub

J'espère que cela ira.....

Je comprends rien a ce code !!! Mais tout ce que je sais !! c'est que ca marche avec une beauté imprssionnante

JE comprend ou il faut changer pour l'appliquer ailleur et cela m'aide beaucoupd ans mon travail

Granddd Merci, t'es un pro felix !!!

( reste stand by pour mes autres question :p hehe :p )

Rechercher des sujets similaires à "copier nouvelle valeur ancienne colonne"