Mini macro - sélection d'une plage de donnée

Bonsoir bonsoir cher forumeur

J'essaye dois corriger 1080 fichiers de statistiques (vive les mémoires au passages) et j'essaye de me faire une macro pour pas galérer (la majorité des corrections sont "bêtes" donc easy de créer une macro).

Il y a une seul partie qui coince avec mon level de macro, je dois conserver une partie des données de mes colonnes A et B. Le critère est le suivant : toutes les données positives de ma colonne A (et leurs valeurs associé dans la colonne B) je les gardent et celles négatives je les supprime.

Les données gardées/sauvées ( donc des valeurs dans les colonne A et B) doivent être copiées en A3.

Je vous joins un fichier exemple avec en jaune l'illustration des données qui faudraient garder dans cette exemple la.

Informations complémentaires qui peuvent être utiles :

  • je n'ai jamais plus de 150 lignes de valeurs
  • mes valeurs commencent toujours pas des données négatives puis des valeurs positivent apparaissent

Si jamais je n'ai pas été assez précis n'hésitez pas

Signé un étudiant qui ne craque pas (encore) sur ses statistiques :p

11question-forum.xlsm (12.73 Ko)
=EQUIV(0;A:A;1)

indiquera la première ligne ...

signé : un ex-étudiant qui n'a jamais craqué devant les stats et les a même enseignées !

11question-forum.xlsm (14.40 Ko)

Bonsoir,

Tout d'abord réponse merci de ta réponse ta signature ma remplie d'un certain sourire

Mais malheureusement ce n'est pas une indication que je cherche mais bien d'avoir plus que dans mes colonnes A et B les données positives qui si trouve.

Je viens de penser à une autre formulation de macro pour faire cela

1/ Supprimer toutes la valeurs négatives de la colonne A

2/ Sélection à partir de A3 la première cellule remplie rencontré vers le bas

3/ Sélectionner également sur la même ligne la cellule de la colonne B

4/ Tout sélectionner vers le bas puis le couper

5/ Coller en A3.

J'ai la macro à une ligne prête, celle de l'étape 3 :'(

J'avais un code pour la première partie que j'ai adapté, pour la seconde c'est rudimentaire mais ça passe (fait via l'enregistreur de macro désole pour mon level ^^ ). C'est le Range("B9").Select qui n'est pas bon de l'enregistreur, ici faut mettre l'étape 3

Je crois que c'est une simple histoire de offset non ? (je ne maîtrise pas ce code correctement.

   For i = 3 To 200               
    For j = 1 To 1
    If Cells(i, j) < 0 Then
    Cells(i, j).ClearContents
    End If
    Next j
    Next i

    Range("A3").Select
    Selection.End(xlDown).Select
    Range("B9").Select
    Range(Selection, Selection.End(xlToLeft)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Cut
    Range("A3").Select
    ActiveSheet.Paste

Merci d'avance pour ce petit rien qui me manque

bonsoir,

une petite boucle...

lancer la macro "Transfert" en étant sur la feuille "Faite vous plaisir" (avec un "s" c'est mieux)

heislsim a écrit :

Bonsoir,

Tout d'abord réponse merci de ta réponse ta signature ma remplie d'un certain sourire

Mais malheureusement ce n'est pas une indication que je cherche mais bien d'avoir plus que dans mes colonnes A et B les données positives qui si trouve.

J'ai un doute ... as-tu vu le fichier qui était attaché à ma réponse ?

faut-il mettre la formule à la place de la valeur ?

bon je simplifie la réponse ... mettre en H3

=INDEX(A:A;EQUIV(0;A:A;1)+LIGNE()-2)

et tirer vers le bas

pour la colonne I, faire un recherchv, donc en I3

=RECHERCHEV(H3;A:B;2;0)

et tirer vers le bas

si j'ai bien compris, une première opération concerne les colonnes A et B puis une opération sur colonne C...

Si c'est bien ça, exécuter la macro et supprimer la colonne J.

Sinon, je réfléchis demain !

Re tout le monde,

Merci pour vos multiples propositions, j'avoue que je ne maîtrise pas les formules index / recherche mais effectivement cela donner le résultat voulu.

Concernant la formule equi je suis plus qu'à l'ouest :/

Je me rends compte de tout le potentiel excel que je ne maîtrise pas encore (est possible de tout maitriser d'excel un jour ?!).

Je ne sais pas si j'ai mal expliquer ou non mais quoi qu'il en soit j'ai réussi à faire une macro qui me donne ce que je souhaite.

En creusant c'était le " ActiveCell.Offset(0, 1).Select " qui me manquait . Je vous donne le résultat final (des fois que dans le futur ça puisse aider quelqu'un

For i = 3 To 200
    For j = 1 To 1
    If Cells(i, j) < 0 Then
    Cells(i, j).ClearContents
    End If
    Next j
    Next i

    Range("A3").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(0, 1).Select
    Range(Selection, Selection.End(xlToLeft)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Cut
    Range("A3").Select
    ActiveSheet.Paste

Merci encore pour le temps que vous m'avez consacré !

J'oubliais : cela m'a fait plaisirS d'être aider

Rechercher des sujets similaires à "mini macro selection plage donnee"