Excel - Valeur Zero et suppression

EmilieM -  
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai une colonne (cf. ex colonne A) comportant des nombres ainsi que plusieurs fois le chiffre 0. Je souhaiterai supprimer les valeurs zéro et que les chiffre situé en dessous d'une valeur 0 la remplace dans la cellule. Mais j'aimerai que cela se fasse dans une autre colonne (cf. ex colonne B) que celle d'origine.

Exemple:
A B
2 2
0 3
3 4
0 5
4 6
5 9
6
0
9

Cela est assez urgent, quelqu'un aurait il une solution?

Emilie

12 réponses

  1. Iama Messages postés 324 Statut Membre 14
     
    Bonjours

    Si j'ai bien compris:

    En prennant ton exemple

    Dans la colonne A tu veux supprimer le 0 en 2éme ligne, que le 3 prenne sa place.
    et dans la B, le 4 doit prendre la place du 3?

    iama
    0
    1. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      Non Iama,
      dans l'exemple donné, A est la colonne de départ, avec les 0, et B est le résultat escompté.
      0
  2. Iama Messages postés 324 Statut Membre 14
     
    OK

    A coté ( Avant) de ta colonne tu insert au besoin une colonne.

    Tu increment ces cellules de 1 à n.

    Tu selectionne les 2 colonnes, que tu trie par ordre chronologie de la colonne A,

    tu suprime les premiére cellules de la colonne qui contienne 0,

    ensuite tu reselectionne les deux colonnes que tu trie en fonction de la colonne contenant les chiffre de 1 à n par ordre chronologique.

    PS avant fais la sauvegarde de sécurité

    iama
    0
  3. Iama Messages postés 324 Statut Membre 14
     
    Correctif

    Tu supprime les cellule de la colonne A et de l'autre.
    0
  4. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    Ce problème doit se traiter en VBA, dans mon code, la plage à traiter commence en A2
    Colles ce code dans un module et associes le à un bouton. Si tu as un problème fais signe

    Sub test()
    Dim Lig As Long
    Dim LigFinA As Long
    Dim Col As Integer
    Dim NbrLig As Long
    Const PremLig = 2 'Première ligne à traiter
    Col = 1 'colonne à traiter
    LigFinA = Range("A65536").End(xlUp).Row + 1
    With Sheets("Feuil1")
    NbrLig = .Cells(65536, Col).End(xlUp).Row
    For Lig = PremLig To NbrLig
    If .Cells(Lig, Col).Value = 0 Then
    Cells(Lig, Col + 1) = Cells(Lig + 1, Col)
    End If
    Next
    End With
    MsgBox ("MODIFICATION EFFECTUE")
    End Sub
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    J'ai lu en diagonale testes plutôt ce code et on verra demain pour l'alléger

    Sub Macro1()
    Dim Lig As Long
    Dim LigFinA As Long
    Dim Col As Integer
    Dim NbrLig As Long
    Const PremLig = 2 'Première ligne à traiter
    Col = 2 'colonne à traiter
    Range("A2", Range("A65536").End(xlUp)).Copy
    Range("A2").Offset(0, 1).Select
    ActiveSheet.Paste
    LigFinA = Range("B65536").End(xlUp).Row + 1
    With Sheets("Feuil1")
    NbrLig = .Cells(65536, Col).End(xlUp).Row
    For Lig = PremLig To NbrLig
    If .Cells(Lig, Col).Value = 0 Then
    Cells(Lig, Col).Delete Shift:=xlUp
    End If
    Next
    End With
    MsgBox ("MODIFICATION EFFECTUE")
    End Sub
    0
  7. EmilieM
     
    Bonjour,
    La macro de Mike fonctionne mais je souhaiterai avoir la méme macro qui s'applique au colonne H et I avec H comme colonne source et I comme colonne de destination. Cela est il possible?
    Emilie.
    0
    1. EmilieM
       
      Le probléme de la macro proposé et que si j'ai 2 zéro à la suite cela ne m'enléve pas les 2 zéros mais qu'un seul.
      Est il possible d'enlever tous les 0, et de remonter les cellules du nombre de 0 supprimé?
      0
  8. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Comme je te l'ai dit, si c'est ce que tu cherches je reverrai le code rapidement écrit et les deux zéro ne posent pas de problème.
    Pour ne pas écrire plusieurs codes, que veux tu exactement que le code s'applique colonne A et retranscrit les valeurs en B et la même chose pour la colonne H et retranscrit en I ou simplement retranscrire les valeurs de H en I
    0
  9. EmilieM
     
    Oui, je souhaiterai que si j'ai 2 zéros cela les supprime et que ca remonte les ligne au nombre De Zéro présent. Si j'en ai 3 que ca remonte de 3 lignes, etc....
    Pour les colonnes peut importe je modifirai la macro en fonction de mes besoins.
    0
  10. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,
    Pour plus d'efficacité et par respect des intervenants évite les doublons ou bien signale-le par un lien.
    Voir ici
    eric
    0
  11. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Effectivement, ouvrir plusieurs discussions n'est pas la chose à faire, salut Eriiic

    regardes ce code qui recopiera les données de la cellule A2 à la dernière cellule non vide de la colonne A, pour les retranscrire en B et supprimer les données égale à 0 en conservant les autres données et les cellules vides. S'il faut traiter les cellules vides comme les cellules contenant la valeur 0, ce n'est pas un problème.
    De même pour l'adapter à une colonne bien précise.

    Sub Macro1()
    Range([A2], [A65000].End(xlUp)).Copy
    [A2].Offset(0, 1).Select
    ActiveSheet.Paste
    Do While WorksheetFunction.CountIf(Selection, 0) <> 0
    For Each Cell In Selection
    If Cell.Value <> "" And Cell.Value = 0 Then
    Cell.Delete Shift:=xlUp '
    End If
    Next
    Loop
    MsgBox ("MODIFICATION EFFECTUE")
    End Sub
    0
  12. EmilieM Messages postés 22 Statut Membre
     
    Bonjour,
    Je reprend cette discution car je souhaiterai effectuer la méme chose mais au lieu de supprimer les cellules égales à 0 je voudrai supprimer les cellules vides. Serait il possible de me stipuler ce qui étre modifié dans la macro précédente?
    Emilie.
    0
  13. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    tout simplement comme cela

    Sub Macro1()
    Range([A2], [A65000].End(xlUp)).Select '.Copy
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.Delete Shift:=xlUp
    End Sub
    0