Recherche et recopie de données entre plusieurs onglets

gozi

XLDnaute Nouveau
Bonsoir,

je viens vers le forum pour gagner du temps et surtout de l'énergie au travail.
Un grand merci donc par avance à ceux qui m'apporteront leur aide.

Mon tableau de travail se trouve sur l'onglet "EXP".
Je dois le compléter en allant piocher des infos dans l'onglet "NEG" et coller ces infos dans des colonnes différentes selon la valeur de l'info repérée.

Mes cellules de référence se trouvent en colonne B de l'onglet "EXP".

- Si dans l'onglet "NEG", la lettre "V" est inscrite en colonne F, alors il faut reporter la donnée contenue en colonne B de l'onglet "NEG" en colonne F de l'onglet "EXP".

- Si dans l'onglet "NEG", la lettre "X" est inscrite en colonne F, alors il faut reporter la donnée contenue en colonne B de l'onglet "NEG" en colonne G de l'onglet "EXP".

- Si dans l'onglet "NEG", il y a du vide en colonne F, alors il faut reporter la donnée B contenue en colonne B de l'onglet "NEG" en colonne G de l'onglet "EXP".



D'autre part, y a-t-il un moyen de conserver la mise en forme des données lors de leur recopie vers l'onglet "EXP" ?

Merci à vous,
gozi
 

Pièces jointes

  • Exemple pour le forum.xls
    27 KB · Affichages: 42

Robert

XLDnaute Barbatruc
Repose en paix
Re : Recherche et recopie de données entre plusieurs onglets

Bonsoir le fil, bonsoir le forum,

Difficile Gozi, de faire un code adapté... Tes explications ne correspondent pas à ton exemple. Colonnes F et G dans les explications, colonnes E et F dans l'exemple. Ligne 5 dans ton exemple les deux colonnes E et F remplies ?...
J'ai choisi l'exemple au lieu des explications. J'espère que ça conviendra :
Code:
Sub Macro1()
Dim n As Object 'déclare la variable n (onglet Neg)
Dim e As Object 'déclare la variable e (onglet Exp)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'décalre la variable dest (cellule de DESTination)
Dim r As Range 'déclare la varialbe r (Recherche)


Set n = Sheets("NEG") 'définit l'onglet n
Set e = Sheets("EXP") 'définit l'onglet e
dl = e.Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 2 (=B) de l'onglet e
Set pl = e.Range("B2:B" & dl) 'définit la plage pl de l'onglet e
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
    Set dest = Nothing 'réinitialise la variable dest
    'définit la recherche r (recherche la valeur exacte de la cellule cel dans la colonne 1 (=A) de l'onglet n
    Set r = n.Columns(1).Find(cel.Value, , xlValues, xlWhole)
    If Not r Is Nothing Then 'condition : si il existe au moins une occurrence trouvée
        Select Case r.Offset(0, 5).Value 'agit en fonction de la valeur de l'occurrence trouvé décalée de 5 colonnes (en colonne F)
            Case "V" 'cas "V"
                Set dest = cel.Offset(0, 4) 'définit la cellule de destination, décalée de 4 colonne par rapport à cel (colonne F)
            Case "X", "" 'cas "X" ou vide
                Set dest = cel.Offset(0, 3) 'définit la cellule de destination, décalée de 3 colonne par rapport à cel (colonne E)
        End Select 'fin de l'action en fonction de...
        r.Offset(0, 1).Copy dest 'copie la cellule adjacente à l'occurrence trouvé (colonne B) dans la cellule de destination dest
    End If 'fin de la condition
Next cel 'prochaine cellule de la boucle
End Sub
 
Dernière édition:

gozi

XLDnaute Nouveau
Re : Recherche et recopie de données entre plusieurs onglets

Merci à tous deux pour votre aide, Chalet53 et Robert, et désolée pour ma réponse tardive.
Je reprends le travail demain et je verrai alors comment tout ça se goupille...
(Désolée aussi pour les décalages de colonnes dans mon exemple.)

Bonne soirée,
gozi
 

Discussions similaires

Statistiques des forums

Discussions
312 304
Messages
2 087 065
Membres
103 451
dernier inscrit
Souleymane