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 :

Macro conversion en CNUM


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut Macro conversion en CNUM
    Salut les forumeurs,
    Je cherche désespérement une macro me permettant de

    1* sélectiooner une plage de données (variable selon le tableur) la plage s'arrête à la première ligne vide...
    2*Convertir l'ensemble des données de cette plage en numérique par la fonction CNUM...

    Est ce que quelqu'un connaîtrait le code de cette action??
    Merci mille fois pour vos réponses.

    Roman

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour,
    Je ne connais pas le code qui va correspondre exactement a ton besoin, donc voila quelque piste pour commencer ton propre code rien qu'a toi

    Dernière ligne et la dernière colonne renseignées d'une feuille
    Cela te permettra de connaitre le nombre de ligne de ton tableau

    Pour le CNUM
    je pense que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .formula ="=CNUM'" & Range("taplage") & ")"
    devrais faire l'affaire regarde l'aide sur formula

    Mais après en fonction de ce que tu veux faire
    Qu le petit bout de code qui va suivre pourrais te mettre sur la piste
    CDbl converti en nombre (CNUM est une fonction excel CDbl est son équivalent en VBA)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim cel as range
     
     
    for each cel in range("TaPlageDonnee")
    cel=CDbl(cel)
    next cel

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut
    Excellent Krovax, j'me suis débrouillé...nikel....
    Dernière question, comment puis je effacer entièrement une ligne si la première cellule de cette ligne est vide où si elle contient "CB"??
    Apprends romis je t'embête plus !!!
    Merci encore !!

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    le code avec tous les commentaire pour le comprendre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub effacerligne()
    Dim DerniereLigne As Integer, i As Integer
     
     
    DerniereLigne = Cells(Columns(1).Cells.Count, 1).End(xlUp).Row
    For i = 1 To DerniereLigne
        If Cells(i, 1) = "" Or InStr(Cells(i, 1), "CB") <> 0 Then
            Rows(i).ClearContents
        End If
    Next i
    End Sub
    La le code fait ce que tu m'as demander il efface la ligne mais ne la supprime pas pour la supprimer il faut mettre
    a la place de
    Pour comprendre comment je trouve la dernière ligne de ta colonne regarde ici
    Dernière ligne et la dernière colonne renseignées d'une feuille

    Ensuite le code fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    pour i allant de 1 à la dernière ligne
         Si la cellule ligne i colonne 1 est vide ou que la position de la chaine de caratère CB dans cette cellule n'est pas nulle (donc que la cellule contient CB quelque part)
              effacer le contenu de la ligne i
        fin si
    i suivant
    pour des info sur la commande Instr

    Manipuler les chaînes de caractères en VB6 et VBA Excel


    Bon courage pour la suite

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut
    Super, ça marche nikel, le seul problème est que la macro m'efface une ligne à la fois (faut la relancer autant de fois qu'il y a de ligne vide...), que faut il modifier pour qu'elle efface d'un coup toutes les lignes répondant aux conditions spécifiées?

  6. #6
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    hmm non elle passe sur toutes les ligne puis que i varie il test une ligen puis la suivante puis la suivante puis la suivante

    Par contre si tu spprime les ligne il faut aller de la dernièreligne a la premiere

    Mon moi ton code pour voir ce que cela donne
    Edit :
    Lance la macro en mode pas a pas (touche F8) et regarde la vaéleur de dernière ligen si tu rentre bien dans la boucle quand est ce que tu en sort, etc...

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut
    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub effacerligne()
    Dim DerniereLigne As Integer, i As Integer
    DerniereLigne = Cells(Columns(1).Cells.Count, 1).End(xlUp).Row
    For i = 1 To DerniereLigne
        If Cells(i, 1) = "" Or InStr(Cells(i, 1), "CB") <> 0 Then
            Rows(i).Delete
        End If
    Next i
    End Sub

  8. #8
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub effacerligne()
    Dim DerniereLigne As Integer, i As Integer
    DerniereLigne = Cells(Columns(1).Cells.Count, 1).End(xlUp).Row
    For i = DerniereLigne to 1 step -1
        If Cells(i, 1) = "" Or InStr(Cells(i, 1), "CB") <> 0 Then
            Rows(i).Delete
        End If
    Next i
    End Sub
    Si tu va de 1 a 10 tu doit supprimer la ligne 2 et 3

    i=1 on test la ligne 1 pas de problème
    i=2 on test la ligne 2 on supprime la ligne 3 remonte en position2
    i=3 on test la ligne 3 qui est lancienne ligne 4 ...

    du coup la ligne 3 ne sera jamais testé a l'envers cela fonctionne très bien

  9. #9
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut
    Excellent, tout marche, merci encore pour ton aide.

Discussions similaires

  1. [VBA-E] macro conversion excel vers csv
    Par abdelhamidem dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/10/2008, 16h48
  2. Macro conversion de date
    Par malabarbe dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/06/2008, 12h30
  3. Macro : Conversion chiffres en lettres
    Par TonyRc dans le forum VBA Access
    Réponses: 4
    Dernier message: 01/05/2008, 13h33
  4. macro conversion .csv
    Par euskadi dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/04/2008, 11h41
  5. [VBA-E] macro conversion excel vers csv
    Par baboune dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/07/2004, 09h23

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