XL 2013 copier coller valeur tableau dans ordre specifique

paskikic

XLDnaute Occasionnel
bonjour à tous,

je souhaite après avoir récupérer des tableaux de valeurs les copiers de ma feuille d import, les coller dans mon tableau mais dans un ordre precis, sachant que pour chaque tableaux les colonnes changent,
j'ai essayer avec union mais çà ne marche pas,

pourriez me donner un coup de pouce, merci à vous....
 

Pièces jointes

  • Classeur1.xlsm
    66.3 KB · Affichages: 12

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @paskikic,

Je n'ai peut-être pas tout compris.

Je ne sais pas si pour toutes les communes les colonnes à copier et les colonnes de destination sont toujours les mêmes (j'ai cru comprendre que non).

J'ai donc utilisé deux variables string: ColonneSource et ColonneDestin
  • La variable ColonneSource contient la liste des colonnes à copier (une par une, séparées par une virgule)
  • La variable ColonneDestin contient la liste des colonnes vers où copier chaque colonne de ColonneSource.
On peut donc faire varier les colonnes à copier et leur destination en fonction des communes (le cas échéant).

Dans cette macro, il faut absolument redéfinir ces deux variables pour chaque commune.

Il faudrait voir peut-être à supprimer dans le tableau résultat toutes les anciennes valeurs avant d'en coller d'autres, non ?

nota : à vous, bien sûr, de bien affecter aux variables ColonneSource et ColonneDestin les valeurs que vous désirez. Moi, j'ai mis n'importe quoi pour tester...

Dans le fichier joint, le code est dans module1 :
VB:
Sub recherche()
Dim c As Range, Adr$, i&, j&, ColonneSource$, ColonneDestin$, Colonnes1, Colonnes2
 
   Adr = Sheets("Conso_histo").Range("b1")
   Set c = Worksheets("Import_donnees").Range("A:A").Find(Adr, LookIn:=xlValues, lookat:=xlPart)
   If Not c Is Nothing Then
      j = c.Row + 5
      If Adr = "AVON-RIGNY" Then
         ColonneSource = "a,d,m,n,p,q,s,u"
         ColonneDestin = "b,d,e,f,g,h,i,j"
      ElseIf Adr = "SAULSOTTE" Then
         ColonneSource = "a,d,m,n,p,q,s,u"
         ColonneDestin = "b,d,e,f,g,h,i,j"
      End If
      If ColonneSource <> "" Then
         Colonnes1 = Split(ColonneSource, ",")
         Colonnes2 = Split(ColonneDestin, ",")
         For i = 0 To UBound(Colonnes1)
            Sheets("Conso_histo").Cells(9, Colonnes2(i)).Resize(10) = Sheets("Import_donnees").Cells(j, Colonnes1(i)).Resize(10).Value
         Next i
      End If
   End If
End Sub
 

Pièces jointes

  • paskikic- recopie colonnes- v1a.xlsm
    69 KB · Affichages: 5
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 115
Messages
2 085 443
Membres
102 889
dernier inscrit
monsef JABBOUR