VBA

Fermé
souka - 26 janv. 2011 à 11:52
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 27 janv. 2011 à 08:38
Bonjour,

Novice VBA, j'ai une petite requête à faire:

Sur ma colonne J
Si cellule = Toto et si la cellule precedente est vide alors je remonte la cellule.

Je sais pas si je suis clair
Merci

4 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 26/01/2011 à 12:05
Bonjour,
1- Attention avec les codes qui utilisent "delete"... Venant d'un forum, on ne sait pas trop le résultat obtenu.
2- Si vous me faites confiance malgré tout, travaillez d'abord sur une copie de votre fichier. Pour cela, ouvrez le, Fichier/Enregistrer sous, appelez le "test_toto.xls" et enregistrez. Travailler toujours sur une copie AVANT. Ben oui, après c'est trop tard...
3- Essayez ce code (à placer dans un module standard) :
Sub Supprime_si_prec_vide() 
Dim Lig As Long, DernierLig As Long 

DernierLig = Sheets("Feuil1").Range("J65536").End(xlUp).Row 
For Lig = 2 To DernierLig 
    If Cells(Lig, 10).Value = "toto" And Cells(Lig - 1, 10).Value = "" Then 
        Cells(Lig - 1, 10).Delete Shift:=xlUp 
        'pour supprimer toute la ligne faire : 
        'Cells(Lig - 1, 10).EntireRow.Delete 
    End If 
Next 

End Sub

Sheets("Feuil1") à adapter en remplaçant Feuil1 par le nom de la feuille concernée.
"Laissez-moi deviner... Votre surnom, c'est «Bande Passante»? "
- Le Tribunal des flagrants délires- P.Desproges -
0
Merci pijaku,

j'ai 2 petits pb avec ce code:

- La feuille concernée ne porte jamais le même nom, donc je peux pas la renomée de manière fixe.

- La cellule Toto remonte bien mais le problème est que tout les reste de la colonne est remonter aussi, or je voudrais remonte que la cellule contenant Toto sans que le reste en bas bouge...

Merci pour ton aide
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
26 janv. 2011 à 13:20
Yes!!!
Alors essaye ce code qui devrait résoudre tes 2 problèmes. Toujours sur une copie de ton fichier!!!!!!!!
Sub remonte_d_une_ligne_si_toto()
Dim Lig As Long, DernierLig As Long

DernierLig = ActiveSheet.Range("J65536").End(xlUp).Row
For Lig = 2 To DernierLig
If Cells(Lig, 10).Value = "toto" And Cells(Lig - 1, 10).Value = "" Then
Cells(Lig - 1, 10).Value = Cells(Lig, 10).Value
Cells(Lig, 10).Value = ""
End If
Next

End Sub
0
Super!!!
ça marche!!! merci Bcp

J'ai encore une dernière requête please...

Colonne A

toto > riri
toto1 > fifi
toto2 > loulou

je voudrais supprimer à chaque fois .....> et laisser que
riri
fifi
loulou

Merci
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
26 janv. 2011 à 16:44
tu as le signe : > ou pas?...
0
oui j'ai tout le temps ce signe.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 27/01/2011 à 08:38
Salut,
Si tu as un espace après le > alors ne touche à rien, ce code est bon. Par contre, si tu n'as pas d'espace, retire le - 1 dans la ligne :
Cells(Lig, 1).Value = Right(Cells(Lig, 1).Value, Len(Cells(Lig, 1).Value) - InStr(Cells(Lig, 1).Value, ">") - 1)

Sub Riri_fifi_loulou() 
Dim Lig As Long, DernierLig As Long 

DernierLig = ActiveSheet.Range("A65536").End(xlUp).Row 
For Lig = 2 To DernierLig 
If InStr(Cells(Lig, 1).Value, ">") <> 0 Then 
    Cells(Lig, 1).Value = Right(Cells(Lig, 1).Value, Len(Cells(Lig, 1).Value) - InStr(Cells(Lig, 1).Value, ">") - 1) 
End If 
Next 
End Sub

Et en cadeau : un super site, qui contient notamment manipuler une chaine de caractères en VB6 et VBA
0