begin process at 2012 02 14 22:27:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

ajout ligne / conversion


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

ajout ligne / conversion

dimanche 11 novembre 2007 à 10:06:18 | ajout ligne / conversion

debutantvba

Bonjour à tous et déjà un grand merci aux éventuelles réponses ;)
Je voudrai, sous VBA, pouvoir ajouter une ligne toutes les 2 lignes a partir d'un fichier Excel puis dans cette nouvelle ligne, faire quelques opérations, telle une conversion binaire d'un nombre qui se touverait alors dans la ligne juste au dessus.
EX:
une ligne avec 6 colonnes ....
-> ajout nouvelle ligne + conversion en binaire de la cellule (1ere ligne / 2eme colonne par exemple)
ex : j'ai un nombre 9841215 et je devrai trouver 10001100101 (ex au hasard je n'ai pas vérif)
Etant plus que débutant en prog sous VBA, je ne connais pas trop la syntaxe pour ce genre d'opéarations.


voilà j'espere avoir bien exposé mon problème.
Merci.
dimanche 11 novembre 2007 à 20:09:18 | Re : ajout ligne / conversion

jack

Administrateur CodeS-SourceS
Réponse acceptée !

Salut
Je recommence puisque tu n'as pas compris :
Le VB de Excel est du VBA --> Il y a un thème pour ces questions, merci de la classer correctement la prochaine fois

Insérer une ligne, je le répète encore une fois aussi : Tu sais le faire à la main, donc enregistre une macro pendant que tu le fais à la main et va voir dans le code de la macro à quelle instruction cela correspond.

Ta deuxième question (*) concerne la transformation d'un décimal en binaire :
Excel ne possède pas de fonction de cenversion directe, il va falloir le coder toi même.
Il faut, pour y arriver, que tu saches comment on passe de l'un à l'autre, ensuite ce n'est qu'une histoire de programmation.
Renseigne-toi la dessus ou révise tes cours parce que le code que je vais te passer fonctionnera peut-être, mais tu n'auras rien appris en l'utilisant sans comprendre.

Function ConvertBase(sNombreOriginal As String, _
                                    iBaseOrigine As Integer, _
                                    iBaseFinale As Integer) As String
     ' Convertit un nombre d'une base (2 à 36) vers une autre base (2 à 36)
    ' (Binaire = Base 2, Octal = Base 8, Décimal = Base 10, Hexadécimal = Base 16)
    '   sNombreOriginal est le nombre a convertir (chaine composée de 0-9, A-Z)
    '   iBaseOrigine est la base correspondant à sNombreOriginal (un entier entre 1 et 36)
    '   iBaseFinale est la base dans laquelle le nombre doit être rendu (un entier entre 1 et 36)
    ' Renvoie une chaîne dans la base désirée (chaine composée de 0-9, A-Z)
    '   (Exemple ConvertBase ("42", 8, 16) convertit 42 (octal) en 22 (hexadécimal)
    ' Si la conversion ne peut se faire, ConvertBase renvoie un texte désignant le
    '    caractère incorrect
    Dim i As Integer
    Dim sCaractèreCourant As String
    Dim iCaractèreValeur As Integer
    Dim iEmplacement As Integer
    Dim dTotal As Double
    Dim dMémoire As Double
    Dim dBaseSortie As Double
    Dim sTemp As String
    If sNombreOriginal = "" Then sNombreOriginal = "0"
    ' On s'assure que la base entrée est exploitable
    If iBaseOrigine < 2 Or iBaseOrigine > 36 Or _
        iBaseFinale < 2 Or iBaseFinale > 36 Then
        ConvertBase = "Erreur : Base sélectionnée invalide."
        Exit Function
    End If
    ' Transforme les caractères en majuscule
    sTemp = UCase$(sNombreOriginal)
    iEmplacement = Len(sTemp)
    For i = 1 To Len(sTemp)
        iEmplacement = iEmplacement - 1
        sCaractèreCourant = Mid$(sTemp, i, 1)
        iCaractèreValeur = 0
        If Asc(sCaractèreCourant) > 64 And _
            Asc(sCaractèreCourant) < 91 Then _
            iCaractèreValeur = Asc(sCaractèreCourant) - 55
        If iCaractèreValeur = 0 Then
            ' On s'assure que sNombreOriginal est exploitable (global)
            If Asc(sCaractèreCourant) < 48 Or _
                Asc(sCaractèreCourant) > 57 Then
                ConvertBase = "Erreur : Caractère """ & sCaractèreCourant & """ invalide."
                Exit Function
            Else
                iCaractèreValeur = Val(sCaractèreCourant)
            End If
        End If
        If iCaractèreValeur < 0 Or iCaractèreValeur > iBaseOrigine - 1 Then
            ' On s'assure que sNombreOriginal est exploitable (en fonction de la base)
            ConvertBase = "Erreur : Caractère """ & sCaractèreCourant & _
                            """ non valide en Base" & Str(iBaseOrigine) & "."
            Exit Function
        End If
        dTotal = dTotal + iCaractèreValeur * (iBaseOrigine ^ iEmplacement)
    Next i
   ' Convertit la valeur Decimale par divisions successives
    Do
        dBaseSortie = CDbl(iBaseFinale)
        dMémoire = ModDouble(dTotal, dBaseSortie)
        dTotal = (dTotal - dMémoire) / iBaseFinale
        If dMémoire >= 10 Then
            sCaractèreCourant = Chr$(dMémoire + 55)
        Else
            sCaractèreCourant = Right$(Str$(dMémoire), Len(Str$(dMémoire)) - 1)
        End If
        ConvertBase = sCaractèreCourant & ConvertBase
        DoEvents
    Loop While dTotal > 0
End Function

Function ModDouble(sNombreOriginal As Double, DivNum As Double) As Double
   ModDouble = sNombreOriginal - (Int(sNombreOriginal / DivNum) * DivNum)
End Function

Et pour l'exploiter :
   maCelluleBinaire = ConvertBase(maCelluleDécimale, 10, 2)


(*) On demande pourtant dans le règlement de ne poser qu'une seule question par post afin, justement, d'éviter d'avoir à répondre à des questions que tu as peut-être déjà résolu comme l'insertion d'une ligne.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés


Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)



Cette discussion est classée dans : vba, ligne, conversion, ex, ajout


Répondre à ce message

Sujets en rapport avec ce message

ajout/suppression ligne et opération [ par debutantvba ] Bonjour à tous et déjà un grand merci aux éventuelles réponses ;)Je voudrai, sous VBA, pouvoir ajouter une ligne toutes les 2 lignes a partir d'un fic listeview+ajout d'icones [ par fodbe ] bonjourest ce que vous pouvez me dire comment je peux ajouter un icône dans une listeview sur une ligne quelconque etune dont la colonne est quelconqu [VBA]Suppression de lignes en fonction de la valeur d'une cellule pour différente colonne [ par Tokh ] Bonjour à tous,Déjà désolé si la question 'est pas au bon endroit, j'ai choisi de la mettre dans la section débutante vb.net et VB 2005 plutôt que dan [VBA] rajouter dans une listbox [ par tfkgsm ] bonjour,je souhaite rajouter une ligne de trois colonnes dans une listbox. je dispose d'un tableau ( 1,3) et d'une listbox de trois colonne. J'ai essa ajout d'une ligne dans un fichier dans un endroit bien definis en c# [ par nehla ] nehloucha Slt tout le monde j'ai un problème d'ajouter une ligne dans un fichier dans un endroit bien précis. Mon programme est en C#. Merci de votre pour les pros des listview [ par 59cortex59 ] Bonjour a tous,J'ai essayer de reprendre des codes existant sur le net mais je comprend pas trop. Je travail avec une listview et je voudrais savoir s suppression d'une ligne Excel en VBA [ par skillipo ] Bonjour,je voudrais supprimer toute une ligne de mon fichier Excel (pas seulement le contenu).j'ai utilisé Cells(A, 7).EntireRow.Deletemais ce ne fonc TEST DE ZONES EXCEL EN VBA [ par ROLAND04 ] J'ai appris à développer en macro programmation sous excel mais ne connais rien à VBA. Voilà mon problème :j'ai une ligne comprenant des montants dans ajout de ligne sur une feuille protegee [ par lilikel ] Bonjour, Je dois preparer un formulaire pour ma societeJ ai deja mis en place un ensemble de macro pour blocage conditionnel de cellules, et de para ajout d'une ligne dans un datagrid [ par perentti ] salut j'ai un pb voilà je veux ajout les valeurs des texte box dans un datagrid et l'envoyé dans une base de donnée avec une boucle j'utilise VB 6.O


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales