Macro effacer cellule puis report

  • Initiateur de la discussion Initiateur de la discussion franck70
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

franck70

Guest
Bonjour à toutes et à tous

J'ai un niveau en macro qui est très faible, d'où un grand besoin d'aide.

Dans le fichier joint, je cherche à faire une macro qui va supprimer, dans la colonne C, toutes les cellules qui ne commencent pas par CX (en gros, il faut enlever tous les noms de ville). Ensuite, il faut s'attaque à la colonne A. En gros, il y a une inscription pour chaque ville sur la première ligne de CX. Mais je voudrais reporter cette inscription sur les lignes ou il y a un CX juste en dessous. Par exemple, mettre BBBB en A6, il faudrait également CCCC en A10 et A11 et DDDD en A15.

J'espère que vouc comprennez ce que je cherche à faire. Si je ne suis pas assez clair, n'hésitez pas à me le dire et j'essayerias de faire mieux!!!

Merci à toutes et à tous.

PS: J'ai mis dans la feuille 2 le résultat que je souhaite obtenir [file name=TEST_20060226124128.zip size=1605]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/TEST_20060226124128.zip[/file]
 

Pièces jointes

Salut franck70,

Regarde la macro qui suit, normalement elle devrait faire ce que tu veux.

Code:
Sub test()
Dim i As Integer

Application.Goto Sheets('feuil1').Range('a1')
'enleve les noms de villes
For i = 1 To Range('c65536').End(xlUp).Row
    If Not Left(Cells(i, 3).Value, 2) = 'CX' Then
        Cells(i, 3).ClearContents
    End If
Next i
'rajoute des données
For i = 1 To Range('c65536').End(xlUp).Row
    If Cells(i, 1).Value = '' And Cells(i, 3).Value ‹› '' Then
        Cells(i, 1).Value = Cells(i - 1, 1).Value
    End If
Next i
End Sub

@+
 
Merci beaucoup Porcinet.

J'ai juste 2 question pour bien comprendre ce qui se passe dans cette macro:
1) Dim i As Integer
Integer, ça veux dire quoi?

2) For i = 1 To Range('c65536').End(xlUp).Row

Pourquoi on met la colonne dans C65536 puisqu'après, on met cells (i,3) ou (i,1) pour définir la colonne? ça veut dire quoi end(xlup) ? Bref, je ne comprend rien à cette ligne!

Mais bon, ça fonctionne quand même, c'est juste pour me permettre de progresser. Merci beaucoup.
 
re,

Et bien tu as raison de poser des questions, c'est comme ca que l'on progresse.
Dim i As Integer permet de declarer la variable i en integer. POur etre vraiment précis sur l'explication, je me suis permis de recopier l'aide excel : Les variables de type Integer sont stockées sous la forme de nombres de 16 bits (2 octets) dont la valeur est comprise entre -32 768 et 32 767. Le caractère de déclaration de type Integer est le signe % (cela signifit que l'on peut mettre Dim i% a la place de la ligne proposée).

Le bout de code Range('c65536').End(xlUp).Row signifit que l'on recupere dans la colonne C, le numero de ligne de la derniere cellule non vide en parant du bas, d'ou le End(xlup).
Je le recupere sur la colonne C car dans ton exemple, s'etait la colonne qui contenait des valeurs le plus bas dans la feuille.

J'espere avoir repondu a tes questions, si ce n'est pas le cas n'hesite pas a refaire signe.

@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
533
Réponses
7
Affichages
829
Retour