IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Conversion nombre stocké sous forme de texte sur une plage discontinue


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut Conversion nombre stocké sous forme de texte sur une plage discontinue
    Bonjour,
    Je souhaiterais convertir une plage discontinue de nombre stockés sous forme de texte en nombres sous forme de nombre.

    La plage va de G2 à la colonne DV, sur la dernière ligne dont une des cellules contient la dernière valeur, dans cette plage j'ai des nombres bien stockés en nombre sur une colonne sur deux les autre colonnes contiennent les fameux nombres stockés sous forme de texte.

    Si la conversion n'affecte pas les nombres stockés sous forme de nombre, on peut partir de toute la plage sinon, s'il est possible, soit de détecter les cellules avec les nombre stockés sous forme de texte, soit de faire l'opération sur une colonne sur 2.

    De façon plus explicite:

    Plage: G2Vn
    n = dernière ligne allant de Gn à DVn contenant au moins une cellule remplie
    (si Z5 est remplie, alors: DVn = DV5)

    Colonnes ave des nombres nombre: G; I; K.....
    Colonnes avec les chiffres stockés sous forme de texte: H; J; L......

    Le code sur lequel je suis parti:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub COPYPASTESEL()
    Worksheets("RECUP").Activate
     
    Dim Tabl(), i As Long
    Tabl = Range("G2", Range("DV65536").End(xlUp))
    For i = LBound(Tabl, 1) To UBound(Tabl, 1)
        Tabl(i, 1) = CDbl(Tabl(i, 1)) 'remplacer CInt par CDbl si nombres décimaux
    Next
    Range("G2").Resize(UBound(Tabl, 1), 1) = Tabl
     
    End Sub
    Merci beaucoup pour votre aide

  2. #2
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    Bonjour Kestion100,

    Je t'invite à regarder du côté de la fonction VB Val.
    Voilà un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
        Dim n&, s$
        n = 3
        s = "3 pommes"
        MsgBox n & " -> " & Val(n)
        MsgBox s & " -> " & Val(s)
    End Sub
    Ton code pourrait donc être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub COPYPASTESEL()
        Dim rg As Range, sh As Worksheet, t()
        Dim i&, j&
     
        Set sh = Sheets("RECUP")
        Set rg = sh.Range(sh.[G2], sh.Range("DV" & Application.Rows.Count).End(xlUp))
        t = rg
            For i = 1 To rg.Rows.Count
                For j = 1 To rg.Columns.Count
                    t(i, j) = Val(t(i, j))
                Next j
            Next i
        rg = t
    fin:
        Set rg = Nothing
        Set sh = Nothing
    End Sub
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

  3. #3

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    La piste a l'air très bonne mais elle ne s'applique, en l'état, que sur les lignes 1 et 2 or la ligne 1 est celle de mes titres de colonnes (je pense pouvoir opérer la modif par moi même).

    As-tu quelque chose pour opérer depuis la ligne 2 jusqu'à la dernière ligne dans laquelle une cellule est remplie?

    Peut-être qu'avec quelque chose de la forme

    i = i + 2 au niveau de la boucle on peut limiter la transformation à une colonne sur 2.
    Dans le code que tu donnes, l'opération ne passe pas à la ligne suivante et je ne vois pas pourquoi??
    En fait, la dernière ligne sera celle pour laquelle la cellule An sera remplie maintenant que j'y pense.

    Avec le code suivant en inscrivant "X" dans DVn si An<>"", tout le tableau est traité mais pas uniquement les lignes dans lesquelles il y a des cellules remplies.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Sub COPYPASTESEL()
     
     
     
        Dim rg As Range, sh As Worksheet, t()
        Dim i&, j&
     
        Set sh = Sheets("RECUP")
        Set rg = sh.Range(sh.[G2], sh.Range("DV" & Application.Rows.Count).End(xlUp))
        t = rg
            For i = 2 To rg.Rows.Count
                For j = 1 To rg.Columns.Count
                    t(i, j) = Val(t(i, j))
                Next j
            Next i
        rg = t
    fin:
        Set rg = Nothing
        Set sh = Nothing
     
    MsgBox "FIN"
     
    End Sub
    Quelqu'un voit l'erreur?

    Je retourne et retourne sans trouver de solution pour que seules les cellules des lignes remplies soient traitées.

  5. #5
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    Bonjour Kestion100,

    Je ne comprends plus rien à ton problème.
    Comment identifier la dernière ligne ?
    Comment sait-on si la ligne doit être traité ou non ?
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    La dernière sélection de la plage s'étend de G2 à DUn, DUn est identifiée par un "X" qui s'inscrit dans la colonne DV pour chaque ligne avec la formule: La dernière ligne est celle pour laquelle il la dernière valeur dans la cellule de la colonne A

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    J'ai fini par trouvé le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Sub COPYPASTESEL()
     
     
     
        Dim rg As Range, rg2 As Range, sh As Worksheet, t()
        Dim i&, j&
     
        Set sh = Sheets("RECUP")
        Set rg = sh.Range(sh.Range("G" & Application.Rows.Count).End(xlUp), sh.Range("DV" & Application.Rows.Count).End(xlUp))
        Set rg2 = sh.Range(sh.Range("G" & Application.Rows.Count).End(xlUp), sh.Range("A" & Application.Rows.Count).End(xlUp))
        t = rg
            For i = 2 To rg2.Rows.Count
                For j = 1 To rg.Columns.Count - 1
                    t(i, j) = Val(t(i, j))
                Next j
            Next i
        rg = t
    fin:
        Set rg = Nothing
        Set sh = Nothing
     
    MsgBox "FIN"
     
    End Sub
    Qui fonctionne

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    Et non, il n'arrive toujours pas a détecter la première et la dernière ligne.


    Je voudrais que le traitement se fasse de la ligne dans laquelle se trouve la dernière cellule de la colonne G remplie jusqu'à la ligne dans laquelle se trouve la dernière cellule de la colonne A remplie

    J'essaie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Dim rg As Range, rg2 As Range, sh As Worksheet, t()
        Dim i&, j&
     
        Set sh = Sheets("RECUP")
        Set rg = sh.Range(Cells(1, 5), Cells(1, 5).End(xlDown)).Rows.Count
        Set rg2 = sh.Range(Cells(1, 125), Cells(1, 125).End(xlDown)).Rows.Count
        t = rg
            For i = rg To rg2
     
            MsgBox i
                For j = 1 To rg.Columns.Count
                    t(i, j) = Val(t(i, j))
                Next j
            Next i
        rg = t
    fin:
        Set rg = Nothing
        Set sh = Nothing
     
    MsgBox "FIN"
     
    End Sub

    En vain

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set sh = Sheets("RECUP")
        Set rg = sh.Range("G1", sh.Range("G1").End(xlDown)).Rows.Count
        Set rg2 = sh.Range("DV1", sh.Range("DV1").End(xlDown)).Rows.Count
    Incompatibilité de type.....

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Sub test()
    Dim rg As Range, rg2 As Range, sh As Worksheet, t()
        Dim i&, j&
     
        Set sh = Sheets("RECUP")
        Set rg = sh.Range(Cells(1, 5), Cells(1, 5).End(xlDown)).Rows.Count
        Set rg2 = sh.Range(Cells(1, 125), Cells(1, 125).End(xlDown)).Rows.Count
        t = rg
            For i = rg To rg2
     
            MsgBox i
                For j = 1 To rg.Columns.Count
                    t(i, j) = TrouveType(t(i, j))
                Next j
            Next i
        rg = t
    fin:
        Set rg = Nothing
        Set sh = Nothing
     
    MsgBox "FIN"
     
    End Sub
    Function TrouveType(V)
    TrouveType = V
    If IsDate(TrouveType) = True And InStr(TrouveType, "/") <> 0 And InStr(TrouveType, ":") <> 0 Then TrouveType = Format(TrouveType, "yyyy-mm-dd hh:mm"): Exit Function
    If IsDate(TrouveType) = True And InStr(TrouveType, "/") <> 0 Then TrouveType = Format(TrouveType, "yyyy-mm-dd"): Exit Function
    If IsNumeric(Replace(TrouveType, ".", ",")) = True Then TrouveType = Replace(TrouveType, ",", "."): Exit Function
    End Function
    Dernière modification par Invité ; 30/09/2015 à 11h17.

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Dim rg As Range, rg2 As Range, sh As Worksheet, t()
        Dim i&, j&
     
        Set sh = Sheets("RECUP")
        Set rg = sh.Range("G1", sh.Range("G1").End(xlDown))
        Set rg2 = sh.Range("A1", sh.Range("A1").End(xlDown))
     
        MsgBox rg.Rows.Count + 1
        MsgBox rg2.Rows.Count
     
        t = rg2
            For i = rg.Rows.Count + 1 To rg2.Rows.Count
     
     
                For j = 1 To rg.Columns.Count
                    t(i, j) = Val(t(i, j))
                Next j
            Next i
        rg = t
    fin:
        Set rg = Nothing
        Set sh = Nothing
     
    MsgBox "FIN"
     
    End Sub
    De i=6 à i=6 mais ne fait rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     Dim rg As Range, rg2 As Range, sh As Worksheet, t()
        Dim i&, j&
     
        Set sh = Sheets("RECUP")
        Set rg = sh.Range("G1", sh.Range("G1").End(xlDown))
        Set rg2 = sh.Range("A1", sh.Range("A1").End(xlDown))
     
        t = rg
            For i = rg.Rows.Count To i = rg2.Rows.Count + 1
            MsgBox i
                       MsgBox j
                       For j = 5 To j = 125
     
                    t(i, j) = Val(t(i, j))
                Next j
            Next i
        rg = rg
    fin:
        Set rg = Nothing
        Set sh = Nothing
     
    MsgBox "FIN"
     
    End Sub
    Là il va directement à "FIN"

  11. #11
    Invité
    Invité(e)
    Par défaut
    Tu as regardé ma proposition?

  12. #12
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    J'ai changé mon fusil d'épaule:

    L'opération serait à faire tant que "FAUX" est inscrit en DV.

    Les autres possibilités d'inscriptions sont "VRAI" ou ""

    Je viens de voir ta proposition peux tu m'indiquer comment passer du format date au format nombre s'il te plaît?

  13. #13
    Invité
    Invité(e)
    Par défaut
    dans ton code tu utilise la fonction Excel Val!
    Val("1,1") retourne 0 val("1.1") retourne 1.1 (numérique).

    la fonction trouvetype retourne trouvetype("1,1") retourne "1.1" et trouvetype("1.1") retourne "1.1" ce qui du point de vue excel est un numérique donc pas de problème! tu na rien a faire juste à copier le code en l’état!

  14. #14
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    De mon côté, j'ai inscrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(An<>"";ESTNUM(Gn:DUn);"")
    en DVn ce qui me permet de savoir quelles sont les lignes à traiter: celles qui ont "FAUX" en DV puisque ce sont celles qui ne sont pas remplies exclusivement avec des nombres au format nombre, celles qui sont correctement remplies affichent "VRAI" et celles pour lesquelles An = "" sont ""

    Le hic est que VBA détecte "" comme une cellule remplie or je voudrais que le traitement s'arrête dans le cas "" justement


    Le code:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
      Dim rg As Range, rg2 As Range, sh As Worksheet, t()
        Dim i&, j&
     
        Set sh = Sheets("RECUP")
        Set rg = sh.Range("DV2", sh.Range("DV2").End(xlDown))
        'Set rg2 = sh.Range("A1", sh.Range("A1").End(xlDown))
     
        MsgBox rg.Rows.Count - 1
        MsgBox rg.Rows.Count + 1
     
        t = rg
            For i = rg.Rows.Count - 1 To rg.Rows.Count + 1
     
     
                For j = 5 To j = 124
                    t(i, j) = Val(t(i, j))
                Next j
            Next i
        rg = t
    fin:
        Set rg = Nothing
        Set sh = Nothing
     
    MsgBox "FIN"
     
    End Sub

  15. #15
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(NBCAR(An)=0;"";ESTNUM(Gn:DUn))

  16. #16
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    Dans quelle cellule inscrirais tu cela?

    Sinon, il est impossible, dans le code, de dire:

    appliquer de Gn à DUn tant que DVn = "FAUX"?

  17. #17
    Invité
    Invité(e)
    Par défaut
    à la place de ça =SI(An<>"";ESTNUM(Gn:DUn);"")
    Dernière modification par AlainTech ; 08/10/2015 à 21h00.

  18. #18
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    OK

    Donc je pense que la solution est là:


    appliquer de Gn à DUn tant que DVn = "FAUX"

    Pour l'instant, le code switch mes formules dans DVn au passage, il faudrait que le traitement s'applique bien de Gn à DUn

    En partant de ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Dim rg As Range, rg2 As Range, sh As Worksheet, t()
        Dim i&, j&
     
        Set sh = Sheets("RECUP")
        Set rg = sh.Range("DV2", sh.Range("DV2").End(xlDown))
        'Set rg2 = sh.Range("A1", sh.Range("A1").End(xlDown))
     
        t = rg
            For i = rg.Rows.Count - 1 To rg.Rows.Count + 1
     
      MsgBox i
                For j = 7 To j = 125
                    t(i, j) = Val(t(i, j))
                Next j
            Next i
        rg = t
    fin:
        Set rg = Nothing
        Set sh = Nothing
     
    MsgBox "FIN"
     
    End Sub
    J'ai l'impression qu'il ne s'applique qu'a la colonne DV en fait?????

    Avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     Dim rg As Range, rg2 As Range, sh As Worksheet, t()
        Dim i&, j&
     
        Set sh = Sheets("RECUP")
        Set rg = sh.Range("G2", sh.Range("DU2").End(xlDown))
        'Set rg2 = sh.Range("A1", sh.Range("A1").End(xlDown))
     
        t = rg
            For i = rg.Rows.Count To rg.Rows.Count + 1
     
      MsgBox i
                For j = 7 To j = 125
                    t(i, j) = Val(t(i, j))
                Next j
            Next i
        rg = t
    fin:
        Set rg = Nothing
        Set sh = Nothing
     
    MsgBox "FIN"
     
    End Sub
    J'ai l'impression que c'est pas mal mail il n'a l'air de s'appliquer qu'aux premières cellules vides des colonnes et non aux dernières cellules remplies??

  19. #19
    Invité
    Invité(e)
    Par défaut
    je t'es donné la solution au poste #14: http://www.developpez.net/forums/d15...e/#post8395154

  20. #20
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 020
    Points : 169
    Points
    169
    Par défaut
    Alors, avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Dim rg As Range, rg2 As Range, sh As Worksheet, t()
        Dim i&, j&
     
        Set sh = Sheets("RECUP")
        Set rg = sh.Range(sh.Range("G2").End(xlDown).Offset(1, 0), sh.Range("DU2").End(xlDown).Offset(1, 0))
        DerLig = sh.Range("A2", sh.Range("A2").End(xlDown)).Rows.Count + 1
        'Set rg2 = sh.Range(sh.Range("DV2").End(xlDown), sh.Range("DV2").End(xlDown))
        DerLig2 = sh.Range("DV2", sh.Range("DV2").End(xlDown)).Rows.Count
          MsgBox DerLig
          MsgBox DerLig2
        t = rg
            For i = DerLig To i = DerLig2
     
      MsgBox i
                For j = 7 To j = 125
                    t(i, j) = Val(t(i, j))
                Next j
            Next i
        rg = t
    fin:
        Set rg = Nothing
        Set sh = Nothing
     
    MsgBox "FIN"
     
    End Sub
    J'ai les bonnes valeur pour mes lignes et colonne à ceci prêt que même avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(NBCAR(An)=0;"";ESTNUM(Gn:DUn))
    VBA prend les cellules de DN="" pour des cellules non-vides.

    Donc il faudrait vraiment détecter les "FAUX"

    Je n'arrive pas à retranscrire tes codes de fromat date à format nombre

    Le meilleur code auquel je sois arriver:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     Dim rg As Range, rg2 As Range, sh As Worksheet, t()
        Dim i&, j&
     
        Set sh = Sheets("RECUP")
        Set rg = sh.Range(sh.Range("G" & Application.Rows.Count).End(xlUp), sh.Range("DU" & Application.Rows.Count).End(xlUp))
        DerLig = sh.Range("A2", sh.Range("A2").End(xlDown)).Rows.Count + 1
        'Set rg2 = sh.Range(sh.Range("DV2").End(xlDown), sh.Range("DV2").End(xlDown))
        DerLig2 = sh.Range("DV2", sh.Range("DV2").End(xlDown)).Rows.Count
     
     
        t = rg
            For i = DerLig To DerLig2
     
     
                For j = 7 To 125
     
                MsgBox i
                MsgBox j
                    Cells(i, j) = Val(Cells(i, j))
                Next j
            Next i
        rg = t
    fin:
        Set rg = Nothing
        Set sh = Nothing
     
    MsgBox "FIN"
     
    End Sub
    A supprimer: la dernière ligne: toujours 999, la dernière ligne avec la formule et les fameux ""

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2007] Nombre stocké sous forme de texte
    Par torvald dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/05/2011, 13h10
  2. Nombre stocké sous forme de texte .xls
    Par pfellmann dans le forum iReport
    Réponses: 0
    Dernier message: 05/08/2009, 11h11
  3. Nombre stocké sous forme de texte
    Par Archampi dans le forum Excel
    Réponses: 2
    Dernier message: 05/11/2008, 20h53
  4. Nombre stocké sous forme de texte
    Par krhyme dans le forum IHM
    Réponses: 5
    Dernier message: 31/10/2007, 00h12
  5. [VBA-E] Probleme avec Nombre stocké sous forme de texte
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/07/2006, 01h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo