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 :

Si (condition) dans une macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Par défaut
    Bonjour,
    j'ai cherché dans tous les sujets (environ 503 pages) mais je n'ai pas trouvé. Alors, je me permets de vous poser mes petits problèmes que je suis incapable de solutionner;

    1 - Je souhaite créer une macro qui recherche des conditions pour s'exécuter quand je la lance :

    j'ai une feuille nommée : Facture,
    j'ai 12 feuilles nommées de 1 à 12, (12 mois de l'année )

    Je souhaite quand je dois saisir une facture nouvelle dans ma feuille facture, qu'une plage de cellules de celle qui est déjà saisie se copie, uniquement "en valeurs" dans la feuille correspondante :

    en clair : (enfin j'espère)
    si dans ma facture déjà saisie, dans la cellule A1 pas exemple, il y a 1, la copie doit se faire dans la feuille nommée1... 2 dans 2 etc.

    Ou mieux encore
    Imaginons que je n'ai pas de feuilles préparées (1 à 12) et que la macro crée une feuille sur laquelle se fait la copie et que cette feuille soit nommée automatique du nom de la cellule A1..... waw le pied ce serait !

    Pouvez-vous m'aider ?
    Merci d'avance,
    Amicalement,
    Lionel,

    Je ne connais pas du tout VBA et je ne parle même pas anglais..... pas facile pour moi.

    Voilà ce que j'ai fait par recoupement :

    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
    30
    31
    32
    33
    Sub Archivage()
    '
    ' Archivage Macro
    '
     
    '
        If ("=MONTH(Facture!R[-3]C[-12])" = "10") Then
        ActiveSheet.Unprotect
     
        ActiveSheet.Unprotect
        Sheets("1").Select
        ActiveSheet.Unprotect
     
        Sheets("Facture").Select
        Range("Y7").Select
        Selection.Copy
        Sheets("1").Select
        Range("Y7").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
        Sheets("Facture").Select
        Range("B10:AH55").Select
        Selection.Copy
        Range("AK7").Select
        Sheets("1").Select
        Range("B10").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("B10").Select
        Application.CutCopyMode = False
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
        End If

    Merci pour votre aide,
    Amicalement,
    Lionel,

  2. #2
    Membre confirmé
    Homme Profil pro
    developpeur
    Inscrit en
    Octobre 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 124
    Par défaut Model
    Dans le même genre, afin d'avoir une création d'onglet à la demande et avec un model unique j'ai fait la macro ci dessous.

    J'ai crée un onglet "model" avec la couleur, format etc... et donc je lance cette macro qui gére une copie de ce model avec le nom de mon choix qui pour toi par exemple peut se trouver dans ton onglet facture.

    Il est facile ensuite d'y ajouter des éléments comme la date nom du client etc...


    voici 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    Sub MODEL_UNIQUE()
     
    Dim onglet As Long
    Dim nom_onglet, nvlle_feuille As String
     
    onglet = ActiveWorkbook.Sheets.Count ' compte le nb d'onglet
    nom_onglet = ActiveWorkbook.Sheets(onglet).Name
    nvlle_feuille = "ton choix" 'ou range("facture!A1").value
     
    ' test si la feuille existe
       If feuille_existe(nvlle_feuille) = True Then
     
        Response = MsgBox("Cette feuille existe déjà dans ce classeur" _
        & Chr(13) & "Voulez vous la remplacer?", vbYesNo, "Supression de la feuille?")
     
       If Response = vbYes Then
             Application.DisplayAlerts = False
             Sheets(nvlle_feuille).Select
             ActiveWindow.SelectedSheets.Delete
             Application.DisplayAlerts = True
     
     
     
        Sheets("model").Select ' Prend la forme du model unique à recopier
        onglet = onglet - 1
        Sheets("model").Copy After:=Sheets(onglet) ' création d'une copie du modél sur le dernier onglet
     
        'changer le nom de la nouvelle feuille
        onglet = onglet + 1
        nom_onglet = ActiveWorkbook.Sheets(onglet).Name
     
        Sheets(nom_onglet).Select
        Sheets(nom_onglet).Name = nvlle_feuille
     
        Range("A1").Select
        GoTo fin
     
     
                  Else
                     Exit Sub
                        End If
        End If
     
        Sheets("model").Select ' Prend la forme du model unique à recopier
        Sheets("model").Copy After:=Sheets(onglet) ' création d'une copie du modél sur le dernier onglet
     
        'changer le nom de la nouvelle feuille
        onglet = onglet + 1
        nom_onglet = ActiveWorkbook.Sheets(onglet).Name
     
        Sheets(nom_onglet).Select
        Sheets(nom_onglet).Name = nvlle_feuille
     
    fin:
     
        Range("A1").Select
     
     
     
     
    End Sub
     
    Function feuille_existe(nom_feuille)
    For n = 1 To Sheets.Count
     If Sheets(n).Name = nom_feuille Then
        feuille_existe = True
        Exit Function
     End If
    Next n
    feuille_existe = False
    End Function

  3. #3
    Membre actif
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Par défaut Bonjour "Membre à l'essai"
    Merci pour votre réponse.
    Je vais essayer ça.
    Je suis complètement ignare en VBA c'est pourquoi je vous pose cette question : dois-je remplacer ce qui est écrit en français ?
    Merci de votre aide, vraiment !
    Amicalement,
    Lionel,

  4. #4
    Membre actif
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Par défaut RE RE RE RE
    Je crois que j'ai trouvé une solution au problème.
    Votre macro fonctione super et je vous en remercie vivement.
    Voilà ce que j'ai pensé :

    Je renomme ma feuille qui contient les format uniquement = model,
    Je créé une macro qui copie les valeurs dont j'ai besoin de ma feuille "facture",
    enfin, j'éxécute votre macro et super c'est bien.

    Cependant, il me reste des problèmes à résoudre :

    1 - j'ai besoin d'inclure votre macro (en fait il y en a 2 ) dans ma macro, c'est à dire à un endroit précis.
    Puis-je mettre vos deux macros à la suite "dans la mienne" ?

    2 - est-il possible de nommer automatiquement la nouvelle feuille crée par votre macro en lui donnant le nom du contenu d'une cellule de "modèl" qui est une date ?

    3 - j'ai aussi une feuille "cumuls qui reprends la dernière ligne de chaque facture les valeurs suivantes :

    dates numéros H.T. RS 5 % RS 15 % TTC

    est-il possible d'écrire une macro à inclure ( toujours dans la mienne ) qui reporterait en dessous les unes des autres ces informations à chaque éxécution ?

    Oui, je sais, cela fait bcp et je ne sais quoi dire.
    En tout cas, Un grand merci pour votre.
    Amicalement,
    Lionel,

  5. #5
    Membre actif
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Par défaut encore RE
    J'ai trouvé pour mon problème N° 1 :
    Il suffit d'écrire dans ma macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run "'Sihab factures - Essai.xlsm'!MODEL_UNIQUE"
    J'avance doucement.......

  6. #6
    Membre confirmé
    Homme Profil pro
    developpeur
    Inscrit en
    Octobre 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 124
    Par défaut re
    Pour inclure ma macro dans la votre il suffit de l'appeler par:
    a l'endroit ou vous souhaitez qu'elle se déclanche(à quel moment).

    Pour la 2 eme question c'est possible par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nvlle_feuille =range("facture!A1").value
    Mais attention la date doit être ecrite sous le format 23_10_2011 pour qu'il soit accepter dans l'onglet.
    penser à changer la position A1 par la cellule de votre date

    Ah oui j'ai mit le nom de "model" en onglet mais il est possible de changer se parametre évidement. il faut remplacer tout les "model" par le de votre feuille de réception par exemple.

    Et pour la finir, si vous devez pecher d'autres infos il suffit de rajouter
    à la toute fin de mon code avant end sub:

    C'est détaillé afin de comprendre la logique(il y a plus simple) mais dans votre cas c'est mieux.

    Explication, je vais chercher 3 informations de la feuille cumulus dans les cellules A10,A11,12 et je les reportes dans la nouvelle feuille aux emplacements A20,A21,A22


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    range("nvlle_feuille!A20").value=range("cumulus!A10").value
    range("nvlle_feuille!A21").value=range("cumulus!A11").value
    range("nvlle_feuille!A22").value=range("cumulus!A12").value

  7. #7
    Membre actif
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Par défaut petit RE
    Bonsoir,
    Vous aurez passé une bonne partie de votre temps avec moi, comment vous en remercier ? d'autant que grace à vous, mon "truc" a super avancé.

    J'ai essayé de placer votre code pour renommer la feuille automatiquement mais je n'y arrive pas :


    Pour la 2 eme question c'est possible par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nvlle_feuille =range("facture!A1").value

    Je me l'a met où..... non pas là.
    Encore merci.

  8. #8
    Membre confirmé
    Homme Profil pro
    developpeur
    Inscrit en
    Octobre 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 124
    Par défaut re
    A placer au début de mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub MODEL_UNIQUE()
     
    Dim onglet As Long
    Dim nom_onglet, nvlle_feuille As String
     
    onglet = ActiveWorkbook.Sheets.Count ' compte le nb d'onglet
    nom_onglet = ActiveWorkbook.Sheets(onglet).Name
    nvlle_feuille =range("facture!A1").value
    Pour le reste c'est comme des legos !! il faut faire des tests ...
    Mais maintenant que tu es sur la bonne voie et avec une bonne nuit de sommeil... la solution va te sembler évidente!

  9. #9
    Membre actif
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Par défaut Super
    ça marche du tonnerre, vous êtes un Pro.
    Si on me demande de vous confirmer dans votre essai..... je signe.

    Je vous souhaite aussi une très bonne nuit.

    Nul en informatique mais j'essaie d'y travailler, je ne peux vous apporter mon aide et j'en suis désolé.

    Cependant, sachez que je suis un éleveur d'oiseaux, que je fais de la génétique et que je suis classé champion et capacitaire pour toutes les espèces eixstantes sauf dangereuses.

    Je reproduis, j'apprivoise et j'élève complètement aussi bien des "becs droits" (canaris et autres) que les Psittacidaés (perroquets et perruches).

    Alors, si vous partagez cette passion ou que d'avanture vous avec besoin de mon aide dans ce domaine, elle vous est acquise et c'est avec un grand plaisir que j'interviendrai.

    Encore un grand merci, grâce à vous, j'ai un fichier qui fonctionne "super" et ça, jamais je n'aurais pu le faire.



    Amicalement,
    Lionel,

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

Discussions similaires

  1. [LibreOffice][Tableur] Macro: colorer une ligne sur condition dans une macro?
    Par vandman dans le forum OpenOffice & LibreOffice
    Réponses: 5
    Dernier message: 17/09/2015, 09h04
  2. Probleme avec une condition dans une macro
    Par majudis dans le forum IHM
    Réponses: 1
    Dernier message: 08/10/2010, 16h29
  3. conditions dans une macros
    Par knight007 dans le forum Access
    Réponses: 1
    Dernier message: 01/12/2007, 15h32
  4. [Macro]Conditions dans une macro
    Par choupi2a dans le forum IHM
    Réponses: 2
    Dernier message: 02/05/2007, 13h28
  5. problème de condition dans une macro
    Par Skizo dans le forum Access
    Réponses: 3
    Dernier message: 15/05/2006, 11h22

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