VBA

souka -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
     
    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
  2. souka
     
    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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
       
      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
  3. souka
     
    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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
       
      tu as le signe : > ou pas?...
      0
  4. souka
     
    oui j'ai tout le temps ce signe.
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
       
      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