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 :

Fonction en VBA sous excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 158
    Par défaut Fonction en VBA sous excel
    Bonjour,
    J'ai besoin de réaliser une macro toute bête mais que je peine à faire.
    Je veux parcourir mon tableau de B7 a R89 et pour toute les cases vide mettre un 0 à l'intérieur. Est ce que quelqu'un peut m'aider.
    Merci d'avance et bonne après midi

  2. #2
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,
    En effet c'est tout bête...quand on sait comment faire

    Tu dois faire une boucle pour parcourir tes cellules, dans ton cas tu parcours une plage définie on va donc lui dire de parcourir toutes les cellules de la plage, voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub VideZero()
     
    Dim MaPlage As Range, cel As Range 'Dimensionnement des variables
     
    Set MaPlage = Sheets("TaFeuille").Range("B7:R89") 'Définition de la plage, tu donner le nom de ta feuille
        For Each cel In MaPlage 'Boucle sur chaque cellule
            If cel = "" Then cel = "0" 'Vérif si la cellule est vide
        Next cel 'Passe à la cellule suivante
     
    End Sub
    Je pense avoir mis assez de commentaire, mais n'hésite pas si tu as des questions.

    A+

  3. #3
    Membre éprouvé
    Inscrit en
    Juillet 2009
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 121
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sub test ()
    for i = 2 to 18
    for j = 7 to 89
    if cells(j, i).value = "" then
    cells(j,i).value = 0
    end if
    end sub
    next j
    next i
    edit grillé et sans commentaire

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 158
    Par défaut Fonction en VBA sous excel
    Merci beaucoup pour ton aide mais il y a une incompatibilté de type a priori au niveau du cel.

  5. #5
    Membre éprouvé
    Inscrit en
    Juillet 2009
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 121
    Par défaut
    eh bien prend ma solution elle marche testé et approuvé
    C'est la meme chose que notre cher collègue mais avec des boucle sur les indice sans avoir à définir la range initiale.

    C'est tout simple tu regardes chaque cellule et en fonction de son contenu soit tu ne fais rien soit tu met 0

  6. #6
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Citation Envoyé par CélineM Voir le message
    Merci beaucoup pour ton aide mais il y a une incompatibilté de type a priori au niveau du cel.
    Re, là je comprend pas, sur quel ligne ça coince, as tu changé le nom de la feuille? si non, il faut le faire, si oui, vérifie bien le nom

    @ David_atx, pas grave, c'est l'avantage du forum d'avoir plusieurs solution mais ton End sub avant les next j et next i ça va pas le faire
    Et dernière remarque, on avait dans une autre discussion comparer la rapidité du for each à d'autre boucle et c'est plus rapide (très légèrement et sans réel impact sur une si petite plage...)

    A+

  7. #7
    Membre éclairé Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 887
    Par défaut
    Moi je propose simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Test()
        For Each c In Worksheets("Feuil1").Range("B7:R89")
            If c.Value = "" Then
                c.Value = "0"
            End If
        Next c
    End Sub
    Qui ressemble beaucoup à la proposition de Fvandermeulen

    Qui marche bien chez moi

  8. #8
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 158
    Par défaut Fonction en VBA sous excel
    Désolé tous les deux mais ca me met une erreur de type sur les cas. et lorsque je fais debogage ca plante sur le If Cells(j, i).Value = "" et meme endroit pour la première solution même en changeant le nom de la feuille. Ca je trouve ca bizarre

  9. #9
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Citation Envoyé par CélineM Voir le message
    Ca je trouve ca bizarre
    En effet, c'est très bizarre, d'autant que moi aussi j'avais testé avant de poster (contrairement à ce que je fais d'habitude )

    Est-ce que ça te pose un problème de mettre ton fichier en pièce jointe ?

  10. #10
    Membre éclairé Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 887
    Par défaut
    Si tu veu utiliser Cells
    Tu peu aussi utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Test()
    For i = 7 To 89
     For j = 2 To 18
        If Cells(i, j) = "" Then
        Cells(i, j) = "0"
        End If
     Next j
    Next i
    End Sub

Discussions similaires

  1. Fonction VBA sous Excel 2004 pour MAC
    Par tatayer_42 dans le forum Excel
    Réponses: 3
    Dernier message: 08/08/2008, 17h26
  2. Documenter une fonction vba sous excel
    Par massalf dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 29/10/2007, 21h42
  3. recopie conditionnel par fonction VBA sous Excel
    Par LinusVince dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/02/2006, 18h33
  4. Une macro synthese en VBA sous excel!
    Par max2245 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 27/12/2005, 20h37
  5. objet shape en vba sous excel
    Par kernel57 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/11/2005, 15h04

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