Macro copier-coller
Ravome
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je recherche une macro qui me permettrait de faire les actions suivantes dans excel:
Dans la même feuille excel:
1) Colonne A (où les noms des produits sont rangés par ordre alphabétique croissant): trouver les noms en double
2) Une fois un nom trouvé en double, vérifier la valeur ces cellules correspondantes en colonne L (ex: si les noms en double sont en cellule A5 et A6, alors la macro vérifie les cellules L5 et L6). Ensuite, 3 cas:
a) Les cellules en L sont vides ou identiques, alors ne rien faire.
b) Une des deux cellules est vide, alors copier le contenu de l'une dans l'autre
c) Les cellules sont remplies et différentes, alors me poser la question concernant l'action à effectuer.
Pouvez-vous SVP m'aider?
Merci d'avance.
Je recherche une macro qui me permettrait de faire les actions suivantes dans excel:
Dans la même feuille excel:
1) Colonne A (où les noms des produits sont rangés par ordre alphabétique croissant): trouver les noms en double
2) Une fois un nom trouvé en double, vérifier la valeur ces cellules correspondantes en colonne L (ex: si les noms en double sont en cellule A5 et A6, alors la macro vérifie les cellules L5 et L6). Ensuite, 3 cas:
a) Les cellules en L sont vides ou identiques, alors ne rien faire.
b) Une des deux cellules est vide, alors copier le contenu de l'une dans l'autre
c) Les cellules sont remplies et différentes, alors me poser la question concernant l'action à effectuer.
Pouvez-vous SVP m'aider?
Merci d'avance.
4 réponses
-
Bonjour,
Combien de lignes sont à traiter? -
re bonjour
du moment que la colonne A est triée, les doublons sont dans des lignes consécutives, ça simplifie
Private Sub btOK_Click() Dim derli As Long, li As Long derli = Range("A" & Rows.Count).End(xlUp).Row For li = 2 To derli - 1 If Range("A" & li) = Range("A" & li + 1) Then If Range("L" & li) <> Range("L" & li + 1) Then If Range("L" & li) <> "" And Range("L" & li + 1) <> "" Then MsgBox ("lignes " & li & "-" & li + 1 & " on fait quoi?") Else If Range("L" & li) = "" Then Range("L" & li) = Range("L" & li + 1) Else Range("L" & li + 1) = Range("L" & li) End If End If End If End If Next li End Sub
bonne suite -
Bonjour,
Merci pour votre aide et désolé pour ma réponse tardive mais j'étais en déplacement.
Il y a 6170 lignes à traiter. Je n'ai jamais créer de macro et donc je ne sais pas du tout comment faire. Pouvez-vous me guider pas à pas sur la démarche à suivre svp?
Encore merci pour votre aide précieuse. -
Bonjour,
La démarche à suivre?
1- ouvrir le classeur concerné,
2- enregistrer sous "un autre nom"
3- Tapez ALT+F11
4- dans la fenêtre Visual Basic Editor, Insertion/Module
5- copiez-collez le code de ccm81 (salutations!)
6- remplacer la ligne de code :Private Sub btOK_Click()
par :Sub test()
7- fermer la fenêtre Visual Basic Editor
8- ALT+F8, sélectionner "test" puis cliquer sur Exécuter
9- attendre le résultat qui ne devrait plus tarder...