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

Excel Discussion :

Faire commencer une colonne à "0" sans écraser les données en vba [XL-2010]


Sujet :

Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 86
    Points : 51
    Points
    51
    Par défaut Faire commencer une colonne à "0" sans écraser les données en vba
    Bonjour à tous,
    voilà, j'ai un tableau la colonne A(la première colonne) ne commence pas à 0
    je cherche un code pour que la colonne se remplisse en commençant par 0 avec un pas de 0.1 sans bien sur écraser les premières données.
    En fait il s'agit de compléter la colonne jusqu'à 0 avec un pas de 0.1.
    voici le bout de code que j'ai pu écrire.

    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
    a = Range("A1").Value
       MsgBox "a égale à" & a
     
       'le to
       If a <= 0.1 Then
        Range("A3:A" & intNbLigneAVAN_co).Select
        Selection.Copy
       'placer les valeurs dans la feuille tampon
        Windows(strExtractDataFile).Activate
        Sheets("CAL").Select
        Cells(2, 7).Select
         Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
     
         ElseIf a > 0.1 Then
         Range("A3:A" & intNbLigneAVAN_co).Select
     
         Do Until a = 0
         a = a - 0.1
         MsgBox "a=" & a
        Loop 
         Range("A3:A" & intNbLigneAVAN_co).Select
        Selection.Copy
       'placer les valeurs dans la feuille tampon
        Windows(strExtractDataFile).Activate
        Sheets("CAL").Select
        Cells(2, 7).Select
         Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
         End If
    mais je boucle à l'infinie donc pas d'ajout de données dans la colonne.

    Merci déjà pour votre aide.

  2. #2
    Membre éclairé Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Points : 827
    Points
    827
    Par défaut
    est ce que tu pourrais mettre un fichier joins avec ce que tu souhaite déplacer comme donnée ?
    Genre le "avant" / "après" ? Ca permettrait peut être de mieux comprendre.
    - La dernière fois que j'ai testé ca fonctionnait !
    - Vous n'avez rien modifié ?
    - Non ! Je suis pas idiot non plus.
    - ....
    - Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.

  3. #3
    Membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 86
    Points : 51
    Points
    51
    Par défaut
    Nako_lito , le fichier joint
    Fichiers attachés Fichiers attachés

  4. #4
    Membre éclairé Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Points : 827
    Points
    827
    Par défaut
    Tu veux simplement aller de 0 à X par pas de 0.1 ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim i As Integer
    Dim y As Integer
    Dim x As Integer
     
    y = 1
    x = CInt(Sheets("Feuil1").Range("A3").Value)
    For i = 0 To x Step 0.1
       Sheets("Feuil1").Range("C" & y) = i
       y = y + 1
    Next
    Ici, la valeur de X dépend de la valeur qu'il y a en A3.
    Il prend cette valeur et dans la colonne C, chaque cellule égal la cellule précédente +0.1 jusqu'a atteindre la valeur de X.
    - La dernière fois que j'ai testé ca fonctionnait !
    - Vous n'avez rien modifié ?
    - Non ! Je suis pas idiot non plus.
    - ....
    - Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.

  5. #5
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Bonjour Maude,

    voici une alternative fondée sur le classeur joint du post #3 (activer la feuille au préalable si besoin) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Demo()
        Cells(5, 1).AutoFill Cells(5, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Value / 0.1), xlFillCopy
        Cells(4, 1).Value = 0
    End Sub

    Bon week-end et ne pas oublier :
    _________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  6. #6
    Membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 86
    Points : 51
    Points
    51
    Par défaut
    Bonjour à tous,
    je viens de tester les 2 codes que j'ai reçus.
    le premier remplit toutes la colonne avec des "0"
    le deuxieme copie la valeur de cells(5,1) dans toute la colonne

    je m'explique mieux:
    ma colonne "depth" commence à 3 mais je veux un code qui me permet d'ajouter des valeurs au dessus de 3 avec un pas de 0.1 jusqu'à 0, c'est à dire: 2.9;2.8;2.7........;0 dans la même colonne "Depth"
    Merci déjà.

  7. #7
    Membre éclairé Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Points : 827
    Points
    827
    Par défaut
    Citation Envoyé par Nako_lito Voir le message
    Tu veux simplement aller de 0 à X par pas de 0.1 ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim i As Integer
    Dim y As Integer
    Dim x As Integer
        
    y = 1
    x = CInt(Sheets("Feuil1").Range("A3").Value)
    For i = x To 0 Step -0.1
       Sheets("Feuil1").Range("C" & y) = i
       y = y + 1
    Next
    Ici, la valeur de X dépend de la valeur qu'il y a en A3.
    Il prend cette valeur et dans la colonne C, chaque cellule égal la cellule précédente +0.1 jusqu'a atteindre la valeur de X.
    Modifie la ligne est rouge gras en rajoutant le signe "-" devant le 0.1.

    Il va partir de ton nombre x qui est en A3 jusqu'a 0 par pas de -0.1
    Donc si en A3 tu mets 5, tu obtiendra 5;4.9;4.8;4.7;...;0.3;0.2;0.1;0
    - La dernière fois que j'ai testé ca fonctionnait !
    - Vous n'avez rien modifié ?
    - Non ! Je suis pas idiot non plus.
    - ....
    - Enfin si, juste le fichier .dll, mais a 4Ko, ca devait pas être important.

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Maude,

    comme la colonne résultat du classeur joint du post#3 contient des formules de calculs,
    j'étais parti sur cette base et pourtant j'avais testé mais peut-être après un test
    ai-je commis l'erreur de copier les cellules de la colonne C vers la colonne A …

    Voici une correction pour un résultat avec une formule de calculs dans chaque cellule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Demo1()
        With Cells(5, 1)
            .FormulaR1C1 = "=R[-1]C+0.1"
            .AutoFill .Resize(.End(xlDown).Value / 0.1), xlFillCopy
            .Offset(-1).Value = 0
        End With
    End Sub
    S'il faut conserver le format des cellules mais sans formule, insérer alors en ligne n°6 cette ligne de code :

    With .Resize(.End(xlDown).Row - 4): .Value = .Value: End With


    Alternative s'il n'est pas nécessaire de conserver le format des cellules et toujours par formule (vis à vis du n° de ligne) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Demo2()
        Cells(4, 1).Resize(Cells(4, 1).End(xlDown).Value / 0.1 + 1).Formula = "=(ROW()-4)*0.1"
    End Sub

    Et s'il ne faut pas de formule, toujours sans conserver le format des cellules :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Demo3()
        With Cells(4, 1).Resize(Cells(4, 1).End(xlDown).Value / 0.1 + 1)
            .Formula = "=(ROW()-4)*0.1"
              .Value = .Value
        End With
    End Sub
    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  9. #9
    Membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 86
    Points : 51
    Points
    51
    Par défaut
    Nako_lito,le code ne donne aucun résultat
    Marc-L , le post est un exemple de ce que je veux obtenir. je veux AJOUTER des données à ma colonne A avec un pas de 0.1 jusqu'à ce que la première valeur soit 0.

  10. #10
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    Comme la demande est imprécise, il y a tout ce qu'il faut dans mon précédent message que je viens juste d'éditer !

    Suffit de le lire et de choisir le cas en fonction du besoin,
    chaque démonstration ayant été testée de mon côté sur différentes versions d'Excel …


    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  11. #11
    Membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 86
    Points : 51
    Points
    51
    Par défaut
    Merci Marc-L et Nako_lito,
    ça marche à merveille!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Requêtes sql sans écraser les données
    Par Arkodath dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 17/06/2015, 10h02
  2. [MySQL] insérer sans écraser les données déjà existantes d'une table
    Par brajae85 dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 12/05/2008, 12h33
  3. Réponses: 3
    Dernier message: 16/06/2006, 12h53

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