Macro Excel VBA Rechercher puis copier/coller

Fermé
tekitizi Messages postés 5 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 18 avril 2009 - 16 avril 2009 à 22:30
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 17 avril 2009 à 10:39
Bonjour,

J'ai un soucis dans un fichier excel.
Ce fichier en format .xls presente pres de 120 colonnes, et s'étale sur une cinquantaine de lignes.

Il se décompose comme suit:
- la premiere colonne, A, sert de libellé pour les infos présente dans les colonnes suivantes
- la ligne 3 portant des noms d'années, de 2003 à 2008, avec 8 tableaux reprenant les memes années pur des entités différents.
-ainsi, une succession de tableaux, comportant 7 colonnes avec chacune un en tete en ligne 3 ( en l'occurrence des années, --> 2003 à 2008)

Ainsi on a:
- de B à G, je dispose de valeurs qui ont été copiées collées,
-la colonne en valeur, portant le nom de l'année en cours par le programme se chance en "N/A"
- en colonne H, je dispose de données valident pour selectionnée dans le reste de ma feuille (donc comprise entre 2003 et 2008). Les données ci-présentées sont fournies par un Index;Equiv;Equiv, et me servent à les copier/coller dans la colonne de l'année en valeurs (vs suivez jusque là?)
-de meme,je dispose de chiffres differents de I à N ( libellées de 2003 à 2008, qui se remplacent en "N/A" pr l'année selectionnée, et en O je dipose de la colonne Index Equiv ac l'entete de l'année en cours), etc pour la suite des colonnes...


Mon problème est en fait simple:
Comment créer une macro, qui vient automatiquement selectionner la colonne H de l'année traitée par le programme, et qui vienne copier/coller en valeurs les données dans la colonne intitulée "N/A" entre B et G.
De meme, il faudra que cette macro puisse aller en O effectuer l'operation pr les colonnes I à M , puis en V....

Je peux le faire à la main, ms cela prend trop de temps de changer les données pour chaque année..

Merci pour votre aide!
A voir également:

2 réponses

tekitizi Messages postés 5 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 18 avril 2009
16 avril 2009 à 23:16
Plus parlant comme ca:

Il faut trouver un moyen de rechercher dans B2:H2 la valeur "N/A", et de remplacer les lignes 5 à 77 de la colonne par celles de H5 à H77.
Range("H5:H77").Select
Application.CutCopyMode = False
Selection.Copy
Range("B5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Puis, il faut trouver un moyen de rechercher dans p2:u2 la valeur "N/A", et de remplacer les lignes 5 à 77 de la colonne par celles de v5 à v77.
Range("V5:V77").Select
Application.CutCopyMode = False
Selection.Copy
Range("P5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Etc... apres j'adapterais ;-)

Merci de m'eclairer...
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
17 avril 2009 à 10:39
bonjour,

essaies cette macro

Sub chercher_na()
Dim tablo()
Dim cptr As Byte, col As Byte

Application.ScreenUpdating = False
col = 2 'colonne de départ (2=B)

tablo = Range("B2:H2").Value
For cptr = 1 To UBound(tablo, 2)
    If IsError(tablo(1, cptr)) Then
        Exit For
    End If
    col = col + 1
Next
Range("H5:H77").Copy Cells(5, col)
End Sub

0