[VBA] - Copier les données "valides" et classement Ascendant

Bonsoir,

Dans mon document Excel, j'ai une liste de codes qui suivent tout un parcours pour se retrouver dans une colonne, où ils sont appelés via cette formule : "='Nomdelafeuille'!$Colonne:$Colonne" ; par conséquent, ils apparaissent au même endroit que leur colonne d'origine et donc aléatoirement dans la feuille de calcul.

Mon idée est d'arriver à les faire venir dans ma feuille de calcul (Colonne B) via une Macro qui sera capable de ne copier que les lignes contenant un code ( différent de #N/A) et de classer l'ensemble des infos importées dans l'ordre alphabétique.

Pour faire simple :

Copier toutes les données différentes de #N/A (/!\ #REF! dans mon doc exemple) contenues dans la colonne I et les coller dans la colonne B de ma feuille de calcul.

Copier les cellules associées aux données copiées de la colonne I ; contenues dans les colonnes M N O P Q R S lesquelles seront copiées dans les colonnes H I J K L M N de la feuille de calcul.

Trier ensuite ces données de A à Z en veillant à ce qu'uniquement les colonnes D F H I J K L M N soient associées à la sélection (C).

(On peut tester avec les colonnes C et E, mais c'est pas nécessaire).

J'ai joins un petit doc Excel, avec quelques infos plus claire (j'ose espérer).

Je vous remercie de votre attention !

Bonne soirée !

Bonjour,

Pour faire ce que j'essai de faire je me suis aidé de ce qui m'a déjà été expliqué sur le forum et ai adapté ce code :

Private Sub CommandButton1_Click()

  With Sheets("Correspondances")
    Sheets("Traitement saisie").Range("I:I,J:J,K:K,M:S").Copy .Range("I2")
    Range("B:B,D:D,F:F,H:N").Sort Key1:=Range("E2"), Order1:=xlAscending, Header:=xlYes, Orientation:=xlTopToBottom
    End With

End Sub

Sauf que j'ai un message d'erreur :

Erreur d'exécution 1004"

"Vous ne pouvez pas coller cet élément ici, car les zones Copier et de collage sont de taille différente"

Sélectionnez une seule cellule dans la zone de collage ou une zone de même taille, puis réessayez de coller."

Je comprend le message d'erreur, mais justement j'essaye de coller dans plusieurs colonnes. A moins que j'arrive à découper les tâches, une par une.

Je poste rapidement en attentant, si je trouve c'est super, mais vous aurez probablement la réponse avant moi.

Bonne journée !

Re,

Pour me moment j'ai réussi à faire ça :

Private Sub CommandButton1_Click()

  With Sheets("Correspondances")
    Sheets("Traitement saisie").Range("I2:I10000").Copy .Range("B2")
    Sheets("Traitement saisie").Range("J2:J10000").Copy .Range("D2")
    Sheets("Traitement saisie").Range("K2:K10000").Copy .Range("F2")
    Sheets("Traitement saisie").Range("M2:S10000").Copy .Range("M2")
    Range("B:N").Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlYes, Orientation:=xlTopToBottom
    End With

End Sub

Ça marche bien, par contre il semble que ça copie également la mise en forme conditionnelle, je l'ai supprimé car elle ne servait plus, mais peut-être savez-vous comment la retirer ?

Je ne parviens pas à ne copier que les valeurs différentes de #N/A ; mais en l'occurrence elles se retrouvent en bas du tableau, ce qui est déjà mieux.

Bonne journée

bonjour

où sont les données saisies ?

les données importées ?

veux-tu faire une comparaison de 2 tables ?

en gros, je ne comprends pas grand chose à ton fichier

joins un fichier exemple, avec 3 colonnes et 8 lignes par table, et le résultat recherché

amitiés

Rechercher des sujets similaires à "vba copier donnees valides classement ascendant"