Création d'une macro excel

rondup Messages postés 29 Statut Membre -  
rondup Messages postés 29 Statut Membre -


Bonjour à tous et à toutes,

J'ai besoin de votre aide, je suis une bille en macro et je souhaite réaliser un fichier excel qui je pense nécessite ce recours.

Je vous explique mon problème.

Je souhaite remplir différentes cellules de mon tableur automatiquement en utilisant un code chiffre.

La correspondance se fait sur une feuille située sur le même fichier (Elle est nommée Analyse). On retrouve sur celle-ci en colone A les numéros (servant de code) puis différents critères. La cellule comportant ce numéro peut être fusionnée pour renvoyer à 2, 3 ou 4 lignes différentes.

Ce que je souhaite c'est que quand je rentre dans la cellule Jn° de ma feuille Nommée DUAuto je puisse executer la marco qui détecte le N° code, puis insère le nombre de ligne suffisante, fusionne verticalement les cellules précédent la colone J Puis vienne Copier/Coller les différents critères correspondants à mes lignes de la feuille Analyse.

Je pense ensuite mettre un bouton d'action pour excuter la macro à partir de la cellule sélectionnée...

Ce problème à l'air trés clair pour moi, mais il l'est peut être moins pour vous!!
N'hésitez pas à me poser des questions si il manque des informations importantes.

Merci de votre aide .

M

6 réponses

  1. rondup Messages postés 29 Statut Membre
     
    J'ai commencé à fouiller de mon coté.
    Pour chercher la valeur dans ma feuille Analyse j'utilise la fonction set c= find(activecell,lookin:=x1Values)

    Une fois que la cellule correspondnate au critère numérique est localisée je veux ensuite compter le nombre de ligne contenues dans cette cellule (Car des cellules fusionnées).

    Ensuite nommer la valeur trouvée K, pour ensuite retourner sur l'autre feuille et inserer K-1 ligne à la suite de la cellule Jn°

    Quelqu'un à une idée?

    Merci
    0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,
    calculer le nombre de lignes fusionnées :
    Dim nbrlign As Integer 
    Dim c As Range 
    Dim valeur As String 
    valeur = ActiveCell.Value 
    With Sheets(1).Columns(1) 
    set c= .Cells.Find(valeur,lookin:=xlValues) 
    End With 
    nbrlign = c.Offset(1, 0).Row - c.Row

    le nombre de lignes sera alors stocké dans la variable "nbrlign" que tu pourras utiliser pour insérer nbrlign-1 dans l'autre feuille.
    Cordialement,
    -- Tout problème à sa solution. S'il n'y a pas de solution, ou est le problème? --
    0
  3. rondup Messages postés 29 Statut Membre
     
    J'avance à taton mais pour le moment les résultats sont pas probants.
    J'ai pu redéfinir les étapes de la macro:
    1-mémoriser la cellule active.
    2-Rechercher dans la colonne A de la feuille Analyse le code numérique de la cellule active.
    3-Compter le nombre de ligne dans cette cellule (MERCI PIJAKU) (Dans le cas ou 3 Lignes)
    4- Toujours sur cette feuille Copier les cellules B, C, C+1, C+2
    5-revenir à la feuille d'origine
    6-Selectionner la cellule sous la cellule active d'origine.
    7-Inserer NbrLigne-1
    8-Coller les cellules copiées à l'etape 4 en colonne K, M, M+1 et M+2
    9-Fusionner verticalement les cellules (A:A+1:A+2) et(B:B+1:b+2) à (J:J+1:J+2)

    Pour le moment j'ai écrit ça mais ça bloque à "MsgBox". Pouvez vous me filer un coup de main?

    Sub TestMacro2()

    1: 'Mémoriser la Cellule de départ'
    Set Ici = ActiveCell
    2: 'rechercher la valeur de la ligne active'
    With Worksheets(Analyse).Range("a2:a500")
    Set c = .Find(ActiveCell, LookIn:=x1Values)
    If Not c Is MsgBox(Prompt, vbOKOnly, [Erreur], ["Ce N° n'existe pas!!!]) Then

    firstAddress = c.Address

    3: 'compter le nombre de cellule fusionnées'
    Dim nbrlign As Integer
    Dim c As Range
    Dim valeur As String
    valeur = c.Address
    With Sheets(1).Columns(1)
    Set c = .Cells.Find(valeur, LookIn:=xlValues)
    End With
    nbrlign = c.Offset(1, 0).Row - c.Row

    4: 'retourner à la cellule initiale'
    End Sub
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Bon ce code est à tester... :
       Sub test() 
      Dim nbrlign As Integer  
      Dim c As Range 
      'Mémoriser la Cellule de départ 
      Dim valeur As String 'ou Long selon s'il s'agit de nombres ou de caractères 
      valeur = ActiveCell.Value 'que l'on peux remplacer par : valeur = Sheets("NomDeLaFeuille").Range("A5").Value 
      'rechercher la valeur dans le tableau colonne A 
      With Worksheets("Analyse").Range("A2:A500")  
      Set c = .Find(valeur, LookIn:=xlValues) 
      'message d'erreur si le N° n'existe pas 
      If c Is Nothing Then  
      MsgBox "Ce N° n'existe pas!!!" 
      'sortir de la procédure car le N° n'existe pas 
      Exit Sub 
      End If 
      'compter le nombre de cellules fusionnées 
      nbrlign = c.Offset(1, 0).Row - c.Row 
      End Sub 
      
      0
  4. rondup Messages postés 29 Statut Membre
     
    Sur le End Sub il me dit End With attendu
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      oui ben faut le rajouter...
      Dim nbrlign As Integer
      Dim c As Range
      'Mémoriser la Cellule de départ
      Dim valeur As String 'ou Long selon s'il s'agit de nombres ou de caractères
      valeur = ActiveCell.Value 'que l'on peux remplacer par : valeur = Sheets("NomDeLaFeuille").Range("A5").Value
      'rechercher la valeur dans le tableau colonne A
      With Worksheets("Analyse").Range("A2:A500")
      Set c = .Find(valeur, LookIn:=xlValues)
      End With
      'message d'erreur si le N° n'existe pas
      If c Is Nothing Then
      MsgBox "Ce N° n'existe pas!!!"
      'sortir de la procédure car le N° n'existe pas
      Exit Sub
      End If
      'compter le nombre de cellules fusionnées
      nbrlign = c.Offset(1, 0).Row - c.Row
      End Sub
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. rondup Messages postés 29 Statut Membre
     
    Comme je le disais dnas le début de ma question,
    je suis vraiment un débutant en macro.

    J'ai beau rechercher sur d'autre forum j'arrive pas à faire ce que je veux...

    Comment on dit au "programe de retourner à la cellule initiale et de passer à la ligne suivante et d'y inserer nbrlign-1?
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Ou est ta cellule initiale? Qu'elle feuille? Quelle colonne, ligne?
      Je suppose qu'il s'agit de l'activecell du début :
      Sub test()
      Dim nbrlign, i, lign As Integer
      Dim c As Range
      'Mémoriser la Cellule de départ
      Dim valeur As String 'ou Long selon s'il s'agit de nombres ou de caractères
      valeur = ActiveCell.Value 'que l'on peux remplacer par : valeur = Sheets("NomDeLaFeuille").Range("A5").Value
      'rechercher la valeur dans le tableau colonne A
      With Worksheets("Analyse").Range("A1:A500")
      Set c = .Find(valeur, LookIn:=xlValues)
      'message d'erreur si le N° n'existe pas
      If c Is Nothing Then
      MsgBox "Ce N° n'existe pas!!!"
      'sortir de la procédure car le N° n'existe pas
      Exit Sub
      End If
      'compter le nombre de cellules fusionnées
      nbrlign = c.Offset(1, 0).Row - c.Row
      End With
      ActiveCell.Offset(1, 0).Activate
      lign = ActiveCell.Row
      For i = lign To lign + nbrlign - 2
      Cells(i, 1).EntireRow.Insert
      Next i
      ActiveCell.Offset(-1, 0).Activate
      Range(ActiveCell, ActiveCell.Offset(9, 0)).Merge
      End Sub

      Ne te reste qu'à copier coller les valeurs qui t'intéressent...
      0
  7. rondup Messages postés 29 Statut Membre
     
    Alors je reprend,
    Oui c'est bien l'active cell du début, La valeur contenue dans cette cellule me permet de fixer le numéro ou chiffre à rechercher dans la colonne A de la feuille Analyse.

    Je vais voir avec tes nouvelles indications.

    Merci
    0